在异步函数调用之外使用变量

时间:2017-08-16 06:57:12

标签: javascript node.js asynchronous

我在这里看到了很多帖子,展示了如何使用回调进行异步函数调用。我已经使它工作了,但是,我似乎无法找到如何利用从函数外部的函数中检索的变量。

        var json = JSON.parse(body);
        var accountID = json.accountId; 
        var getMatchData;

        getRecentMatchData(accountID, function(err, res) {
            getMatchData = res;
            //console.log(res);
        });
        console.log(getMatchData);

我试图使用getMatchData传递到app.post中的其他函数,但是它打印为未定义。如何访问此变量以在异步方法之外使用?我是否使用另一个回调?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您将不得不使用async waterfall之类的东西。最后它意味着另一个回调。 你的示例代码示例很小,可以编写正确的重构,但这会有所帮助。

async.waterfall([
    function(callback) {
        getRecentMatchData(accountID, function(err, res) {
          callback(err, res); 
          getMatchData = res;
          //console.log(res);
        })
    },
    function(getMatchData, callback) {
        // getMatchData now equals 'res'
        // do what you have to do with getMatchData
        callback(null, 'result');
    }
], function (err, result) {
    // result now equals 'result'
});