Javascript Promise.join()中的条件句

Javascript Promise.join()中的条件句,javascript,ecmascript-6,bluebird,es6-promise,Javascript,Ecmascript 6,Bluebird,Es6 Promise,我很难获得正确的bluebird Promise流,假设所有查询都返回Promise,处理以下逻辑的最佳方法是什么: Promise.join(query1(), query2(), (result1, result2) => { if (result1 === "Something") { query3() } else { // do nothing } }) 如何继续处理join方法的返回值?要继续流,需要从处理程序返回一些内容。在本例中,您需要返回由query

我很难获得正确的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();
 }
});
Promise.join(query1(), query2(), (result1, result2) => {
 if (result1 === "Something") {
   return query3();
 }
})
.then((value_resolved_from_query3) => {
    // do something with value_resolved_from_query3
});
既然
query3()
返回了一个承诺,您就可以将then处理程序附加到
join
的结果,并通过
query3
解析值,如下所示

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

要继续该流,需要从处理程序返回一些内容。在本例中,您需要返回由
query3
返回的值,如下所示

Promise.join(query1(), query2(), (result1, result2) => {
 if (result1 === "Something") {
   return query3();
 }
});
Promise.join(query1(), query2(), (result1, result2) => {
 if (result1 === "Something") {
   return query3();
 }
})
.then((value_resolved_from_query3) => {
    // do something with value_resolved_from_query3
});
既然
query3()
返回了一个承诺,您就可以将then处理程序附加到
join
的结果,并通过
query3
解析值,如下所示

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

如果它转到else分支怎么办?then()还会被调用吗?@Sawyer它仍会被调用,但由于我们没有显式返回任何内容,
undefined
将被传递到
value\u resolved\u from\u query3
我如何才能将一个全面捕获的错误处理程序附加到此表达式?@Sawyer就像附加一个
then
处理程序一样,附加一个
.catch
处理程序。如果它转到else分支怎么办?then()还会被调用吗?@Sawyer它仍然会被调用,但由于我们没有显式返回任何内容,
undefined
将被传递到
value\u resolved\u from\u query3
我如何才能将一个catch all错误处理程序附加到此表达式?@Sawyer就像附加一个
然后
处理程序一样,附加一个
.catch
处理程序。