如何打破承诺链

我这样承诺

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

回到顶部