我正在构建一个节点模块,它应该在节点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
})
}
我怎样才能完成这项工作?
答案 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是一个承诺......