等待异步调用完成以在 Node 中继续

Waiting until async call is done to proceed in Node

我正在尝试构建机器人集群,但遇到了一些问题。

我想调用以下函数,称为 BuildABot。

http://pastebin.com/zwP7rZay

现在调用完成后,我想调用 requestItems,它将 steamOffers 对象作为参数。

http://pastebin.com/jsJ4fhwG

然而,该对象为空,因为调用尚未完成。

有没有办法在 buildABot 完成之前停止调用?

有多种方法可以满足您的要求,我将提及 2 个选项,但我相信您可以找到更多选项。您可能会在网上找到更多示例。

选项 1:使用回调函数 -

将回调函数传递给异步函数,当异步函数完成时它会调用回调函数。这样回调函数中的代码只会在异步调用结束时执行。

相关主题 - how-to-write-asynchronous-functions-for-node-js

选项 2:如果您有更复杂的逻辑并且想要一个接一个地执行,您可以使用异步瀑布。 代码示例:

async.waterfall([
    function(callback){
        callback(null, 'one', 'two');
    },
    function(arg1, arg2, callback){
      // arg1 now equals 'one' and arg2 now equals 'two' 
        callback(null, 'three');
    },
    function(arg1, callback){
        // arg1 now equals 'three' 
        callback(null, 'done');
    }
], function (err, result) {
   // result now equals 'done'     
});

有关详细信息,请参阅 async module site