gpt4 book ai didi

javascript - 如何打破 promise 链

转载 作者:可可西里 更新时间:2023-11-01 01:59:12 25 4
gpt4 key购买 nike

我以这样的方式 promise ,

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 ,是的 checkIf 不能修改

如何在第一场比赛中摆脱束缚? (除了显式抛出错误以外的任何方式?)

最佳答案

Any way other than explicitly throwing error?

您可能需要抛出一些东西,但不一定是错误。

大多数 promise 实现都有方法 catch 接受第一个参数作为错误类型(但不是全部,也不是 ES6 promise),这在这种情况下会很有帮助:

function BreakSignal() { }

getPromise()
.then(function () {
throw new BreakSignal();
})
.then(function () {
// Something to skip.
})
.catch(BreakSignal, function () { })
.then(function () {
// Continue with other works.
});

我在我自己的 promise 库的最近实现中添加了中断功能。如果你使用 ThenFail (你可能不会),你可以这样写:

getPromise()
.then(function () {
Promise.break;
})
.then(function () {
// Something to skip.
})
.enclose()
.then(function () {
// Continue with other works.
});

关于javascript - 如何打破 promise 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28803287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com