Angular $q with two "then": 如果第一个到达错误处理程序,第二个会被调用吗?
Angular $q with two "then": will second then be called if first reaches error handler?
$q.all([firstPromise, secondPromise])
.then(successHandler1, errorHandler1)
.then(successHandler2, errorHandler2);
调用errorHandler1后会调用successHandler2吗?
如果reject回调的值returns,则执行成功回调,如果抛出错误,则执行错误回调。
var app = angular.module('myApp', [])
app.controller('myController', function ($q) {
$q(function (resolve, reject) {
reject('1');
})
.then(
function(resolve) {
console.log('resolve 1');
return 'resolve 1';
},
function(reject) {
console.log('reject 1');
throw 'reject 1'
})
.then(
function(resolve) {
console.log('resolve 2');
},
function(reject) {
console.log('reject 2');
return 'reject 2'
})
.then(
function(resolve) {
console.log('resolve 3');
},
function(reject) {
console.log('reject 3');
})
})
http://plnkr.co/edit/k2UprgZd0J4RP8PtDye2?p=preview
控制台:
拒绝 1
拒绝 2
解决 3
调用顺序是这样的:
successHandler1 然后是 successHandler2
要么
errorHandler1 errorHandler2
$q.all([firstPromise, secondPromise])
.then(successHandler1, errorHandler1)
.then(successHandler2, errorHandler2);
调用errorHandler1后会调用successHandler2吗?
如果reject回调的值returns,则执行成功回调,如果抛出错误,则执行错误回调。
var app = angular.module('myApp', [])
app.controller('myController', function ($q) {
$q(function (resolve, reject) {
reject('1');
})
.then(
function(resolve) {
console.log('resolve 1');
return 'resolve 1';
},
function(reject) {
console.log('reject 1');
throw 'reject 1'
})
.then(
function(resolve) {
console.log('resolve 2');
},
function(reject) {
console.log('reject 2');
return 'reject 2'
})
.then(
function(resolve) {
console.log('resolve 3');
},
function(reject) {
console.log('reject 3');
})
})
http://plnkr.co/edit/k2UprgZd0J4RP8PtDye2?p=preview
控制台:
拒绝 1
拒绝 2
解决 3
调用顺序是这样的:
successHandler1 然后是 successHandler2 要么 errorHandler1 errorHandler2