如何打破承诺链
我这样承诺
function getMode(){ var deferred = Promise.defer();
checkIf('A')
.then(function(bool){
if(bool){
deferred.resolve('A');
}else{
return checkIf('B');
}
}).then(function(bool){
if(bool){
deferred.resolve('B');
}else{
return checkIf('C');
}
}).then(function(bool){
if(bool){
deferred.resolve('C');
}else{
deferred.reject();
}
});
return deferred.promise;
}
checkIf
返回一个promise,yes checkIf
。
我如何在第一场比赛中脱颖而出?(除了显式抛出错误以外,还有其他方法吗?)
回答:
我想你不想在这里连锁。以同步的方式,您会写
function getMode(){ if (checkIf('A')) {
return 'A';
} else {
if (checkIf('B')) {
return 'B';
} else {
if (checkIf('C')) {
return 'C';
} else {
throw new Error();
}
}
}
}
这就是应如何将其转化为承诺:
function getMode(){ checkIf('A').then(function(bool) {
if (bool)
return 'A';
return checkIf('B').then(function(bool) {
if (bool)
return 'B';
return checkIf('C').then(function(bool) {
if (bool)
return 'C';
throw new Error();
});
});
});
}
if else
诺言没有实现。
以上是 如何打破承诺链 的全部内容, 来源链接: utcz.com/qa/404631.html