nodejs承诺从那时起返回值

时间:2018-06-17 15:20:00

标签: node.js promise

我正在构建一个节点模块,它应该在节点promises中处理后返回一个值。

// module
module.exports.get_data = function(input){

var promise = fn1();
promise
      .then((res) => {
           // process res
         return res; // return processed value from get_data function
      })
}

我怎样才能完成这项工作?

1 个答案:

答案 0 :(得分:1)

如果我们看不到fn1是什么或者做什么,很难说出发生了什么。但是get_data需要返回一个promise,而不是那里的值。实际上,返回语句不是get_data的return语句,它是未命名的ES6箭头函数的return语句,它将res返回到promise以便传递给下一个.then()函数。它根本没有传递给get_data。

通过立即返回一个新的Promise,get_data会一直等到promise完成。无论什么调用,get_data都可以调用.then()来使用该值。 像这样:     module.exports.get_data = function(input){     返回新的承诺((解决,拒绝)=> {

    var promise = fn1();
    promise
          .then((res) => {
               // process res
             resolve(res)
          })
    })
}

但这一切似乎都是多余的。 虽然我没有在节点中使用await,但它应该与其他语言一样工作。这意味着您应该能够执行以下操作

module.exports.get_data = function(input){
    var res =  await fn1();
    return res
}

假设fn1是一个承诺......