javascript - Promise.join() 内的条件

标签 javascript ecmascript-6 bluebird es6-promise

我很难获得正确的 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,您可以将 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
});

关于javascript - Promise.join() 内的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32023034/

相关文章:

Javascript 回调不起作用,在 ajax 请求完成之前运行回调

javascript - 如何导出一页的本地存储并导入另一页?

javascript - arr.forEach() 语句的回调中的 promise 拒绝会停止迭代吗?

javascript - Promises/A+ 实现有何不同?

javascript - 使用 webpack 在另一个中包含一个 Angular 模板

java - 如何在没有互联网的情况下获取 phonegap 中的地理位置?

javascript - JavaScript ES6 中大数据异步迭代的习惯用法

javascript - 如何从元素绑定(bind)数据 Web 组件

Javascript:设置数据结构:相交

javascript - 将 Promise 与 then 和 catch 链接起来