重构这一承诺链的好方法是什么?必须有一个更好的方法......但我似乎无法弄明白。 THX
loginPromise.then(function() {
loadConfigFirebase().then(function() {
setupUserObj().then(function() {
saveUserFirebase().then(function() {
loadUserFirebase().then(function() {
ionicUserIdentify().then(function() {
registerDeploy().then(function() {
$ionicLoading.hide();
q.resolve();
}).catch(function(err) {
displayError(err)
})
}).catch(function(err) {
displayError(err)
})
}).catch(function(err) {
displayError(err)
})
}).catch(function(err) {
displayError(err)
})
}).catch(function(err) {
displayError(err)
})
}).catch(function(err) {
displayError(err)
})
}).catch(function(err) {
displayError(err)
})
答案 0 :(得分:3)
function chainPromise(promise, fns, errorFn){
if(!fns.length){
return;
}
promise.then(function(){
var fn = fns.shift();
chainPromise(fn(), fns, errorFn);
}).catch(errorFn);
}
chainPromise(loginPromise, [
loadConfigFirebase,
setupUserObj,
saveUserFirebase,
loadUserFirebase,
ionicUserIdentify,
registerDeploy,
function(){
$ionicLoading.hide();
q.resolve();
}
], displayError);