javascript - 使用 Bluebird promise 返回 2 个变量

标签 javascript node.js promise bluebird

我正在尝试使用 Bluebird 库为 nodejs 编写一个 promise 函数。我想从我的函数中返回 2 个变量。 我希望第一个函数立即返回,第二个函数在返回前完成自己的 promise 链。

function mainfunction() {
    return callHelperfunction()
    .then(function (data) {
        //do something with data
        //send 200 Ok to user
    })
    .then(function (data2) {
        //wait for response from startthisfunction here
    })
    .catch(function (err) {
        //handle errors
    });
}

function callHelperfunction() {
    return anotherHelperFunction()
    .then(function (data) {
        return data;
        return startthisfunction(data)
        .then(function () {
            //do something more!
        })
    });
}

最佳答案

就像普通函数只有一个返回值一样,同样的类比,promises 也只能用一个值解析。

就像常规函数一样,您可以从 promise 返回一个复合值,如果您返回一个数组,您也可以使用 .spread 轻松使用它:

Promise.resolve().then(function(el){
     return [Promise.resolve(1), Promise.delay(1000).return(2));
}).spread(function(val1, val2){
      // two values can be accessed here
      console.log(val1, val2); // 1, 2
});

关于javascript - 使用 Bluebird promise 返回 2 个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31590842/

相关文章:

javascript - 无法从外部访问对象中的变量

javascript - 将值传递给nodejs中的回调

javascript - 如何异步填充选择控件?

javascript - 按顺序运行列表中的函数,直到一个函数解析为止

javascript - 如何使用 Javascript 获取日期差

javascript - 展平数组并保留索引作为其位置值

javascript - 尝试让操作和 reducer 工作时出错

node.js - Node JS 加密,无法在带有重音符号的字符上创建 hmac

javascript - 传递给 readFileSync 的匿名函数不返回任何数据

javascript - 如何使用 Promise 确保方法在保存后运行?