我很难使bluebird Promise流程正确,假设所有查询都返回Promise,那么处理以下逻辑的最佳方法是什么:
Promise.join(query1(), query2(), (result1, result2) => {
if (result1 === "Something") {
query3()
} else {
// do nothing
}
})
如何继续处理join方法的返回值?
最佳答案
要继续该流程,您需要从处理程序中返回一些内容。对于您的情况,您需要返回query3
返回的值,如下所示
Promise.join(query1(), query2(), (result1, result2) => {
if (result1 === "Something") {
return query3();
}
});
现在
query3()
返回一个Promise,您可以在join
的结果上附加一个then处理程序,并得到query3
解析的值,如下所示Promise.join(query1(), query2(), (result1, result2) => {
if (result1 === "Something") {
return query3();
}
})
.then((value_resolved_from_query3) => {
// do something with value_resolved_from_query3
});