【问题标题】:Waiting until async call is done to proceed in Node等待异步调用完成以在 Node 中继续
【发布时间】:2015-03-01 07:53:03
【问题描述】:

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

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

http://pastebin.com/zwP7rZay

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

http://pastebin.com/jsJ4fhwG

但是,对象为空,因为调用还没有结束。

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

【问题讨论】:

    标签: node.js steam


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多