node.js 等待回调完成?

Posted

技术标签:

【中文标题】node.js 等待回调完成?【英文标题】:node.js wait for callback to finish? 【发布时间】:2016-02-17 04:20:43 【问题描述】:

我有以下代码:

            exported.removeWatcher(issueId, user, function(err, result) 
                if (result.statusCode != 204)  // Build a list of failed issues

                 else if (result.statusCode == 204) 

                
                console.log();
            );

我知道使用回调是 node.js 的优势之一,但对于我的用例,我想等到收到来自上述回调的响应(即除非触发回调,否则不要进一步执行代码.) 我怎样才能做到这一点?

【问题讨论】:

是否可以从回调本身进一步执行代码? 你可以使用承诺;) 试图阻塞当前线程直到满足某个条件,这违背了nodejs的核心设计。即使您设法做到这一点,这也是不可取的,并且有可能引入已完成的 sis 问题。 你不能。构建您的代码以异步工作。 感谢 cmets 的各位。我能够按照 GoodDamon 的建议做到这一点,但我仍然需要考虑使这项工作异步工作的替代方法。感谢所有的建议。 【参考方案1】:

您可以使用async.js。只需使用 npm 安装它并在您的代码中“要求”它。

例如:

async.series([ 
  function(callback) 
    myWaitForThisFunction(callback);
  ,
  function(callback) 
    myThenDoThisFunction(callback);
  
]);

【讨论】:

感谢您的建议,在阅读 async.series 文档时,它说如果任何函数遇到错误,则不会调用其余函数并调用主回调。对于我的用例,即使其中一个函数出错,我仍然想处理所有函数。关于如何使用 async 完成此操作的任何想法? 它表示如果任何函数返回错误,则不会遇到错误。如果您使用 try 和 catch 块处理错误,则在您的 catch 块中,您可以使用其他值调用回调函数。例如:try do_something();回调(结果); catch(error) console.log(error);callback(myNonErrorVariable);

以上是关于node.js 等待回调完成?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 回调函数

Node.js学习四 Node.js回调函数

node js 回调函数

Node.js 回调函数

Node.js 回调函数

回调函数