【发布时间】:2017-06-19 00:59:11
【问题描述】:
我在一个 nodejs 项目中工作,想跳过链中的承诺。下面是我的代码。在第一个 promise 块中,它将解析一个值 {success: true}。在第二个块中,我想检查success 的值,如果为真,我想将值返回给被调用者并跳过该链中的其余承诺;如果值为假,则继续链。我知道我可以在第二个块上抛出错误或拒绝它,但我必须处理它不是错误情况的错误情况。那么我怎样才能在承诺链中实现这一点呢?我需要一个不带任何其他第三方库的解决方案。
new Promise((resolve, reject)=>{
resolve({success:true});
}).then((value)=>{
console.log('second block:', value);
if(value.success){
//skip the rest of promise in this chain and return the value to caller
return value;
}else{
//do something else and continue next promise
}
}).then((value)=>{
console.log('3rd block:', value);
});
【问题讨论】:
-
你不能......就像你不能从链条中间取出一个链接并认为你有一个链条......你有两个!当然,可以沿链发送和检测“特制”值
-
您不能将值返回给调用者。调用 promise 的结果返回的是 promise 对象,而不是你返回的值。
标签: javascript node.js promise