我正在尝试执行以下代码:
exports.myFunction = function(){
myPromise.doThis().then(ret => {
return ret;
});
}
调用此函数时,它返回undefined
。如何使函数等待承诺解析然后返回。
答案 0 :(得分:4)
异步,无法保证何时解析承诺。它可能需要等待一段时间(取决于你在做什么)。
在承诺之后继续执行的典型方法是链接执行或使用回调函数。
作为回调
您的示例代码(对我而言)建议使用回调。
exports.myFunction = function(callback){
myPromise.doThis().then(ret => {
callback(ret);
});
}
然后使用看起来类似于:
var myFunction = require('pathToFile').myFunction;
myFunction(function(ret){
//Do what's required with ret here
});
修改强>:
如@torazaburo所述,该功能可以浓缩为:
exports.myFunction = function(callback){
myPromise.doThis().then(callback);
}
作为承诺
exports.myFunction = function(){
//Returnes a promise
return myPromise.doThis();
}
然后使用看起来类似于:
var myFunction = require('pathToFile').myFunction;
myFunction().then(function(ret){
//Do what's required with ret here
});