我很难使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
});

10-04 22:19