Promise.join() 内的条件

conditionals inside Promise.join()

我很难让 bluebird Promise 流程正确,假设所有查询 return Promise,处理以下逻辑的最佳方法是什么:

Promise.join(query1(), query2(), (result1, result2) => {
 if (result1 === "Something") {
   query3()
 } else {
    // do nothing
 }
})

如何继续处理 join 方法的 return 值?

要继续流程,您需要 return 处理程序提供一些信息。在您的情况下,您需要 return 由 query3 编辑的值 return,像这样

Promise.join(query1(), query2(), (result1, result2) => {
 if (result1 === "Something") {
   return query3();
 }
});

现在 query3() return 是一个 Promise,您可以将 then 处理程序附加到 join 的结果并获得由 query3 解析的值,就像这样

Promise.join(query1(), query2(), (result1, result2) => {
 if (result1 === "Something") {
   return query3();
 }
})
.then((value_resolved_from_query3) => {
    // do something with value_resolved_from_query3
});