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 等待回调完成?的主要内容,如果未能解决你的问题,请参考以下文章