等待函数返回值之前解析的承诺

时间:2016-05-13 02:49:36

标签: node.js

我正在尝试执行以下代码:

exports.myFunction = function(){
    myPromise.doThis().then(ret => {
     return ret;
    });
}

调用此函数时,它返回undefined。如何使函数等待承诺解析然后返回。

1 个答案:

答案 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
});