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

时间:2015-03-01 07:53:04

标签: node.js steam

我正在尝试建立一个机器人集群,我在这里遇到了一些麻烦。

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

http://pastebin.com/zwP7rZay

此调用完成后,我想调用requestItems,它将steamOffers对象作为参数接收。

http://pastebin.com/jsJ4fhwG

但是,该对象为null,因为调用尚未完成。

有没有办法在buildABot完成之前暂停通话?

1 个答案:

答案 0 :(得分:1)

有多种方法可以满足您的要求,我会提到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