当所有运行并行function完成他们的工作时如何运行callback?

我得到了堆栈的问题:“所有asynchronousfunction完成工作后如何运行callback”

这里是一个例子:

function doTasks(**callback**) { doTask1(function() { ... }); doTask2(function() { ... }); } 

我不想一个又一个地执行任务。 并行运行它们的想法,但我完全需要callback。 nodeJs是否具有内置function?

现在我正在使用一个EventEmitter和计数器的组合。 每当任务完成时,它将运行一个事件。 因为我知道有多less任务跑了。 我可以数它,并发出callback。 但一定要更灵活一些。 在这里,我现在使用。

 var EventEmitter = require("events").EventEmitter; var MakeItHappen = module.exports = function (runAfterTimes, callback) { this._aTimes = runAfterTimes || 1; this._cTimes = 0; this._eventEmmiter = new EventEmitter(); this._eventEmmiter.addListener("try", callback); } MakeItHappen.prototype.try = function () { this._cTimes += 1; if (this._aTimes === this._cTimes) { this._cTimes = 0; this._eventEmmiter.emit("try", arguments); } } 

还有另一种方法吗?

您可以使用asynchronous库https://github.com/caolan/async

 async.parallel([ function(){ ... }, function(){ ... } ], callback); 

使用计数器:

 var a = function (cb){ //Asynchronous stuff cb (); }; var b = function (cb){ //Asynchronous stuff cb (); }; var remaining = 2; var finish = function (){ if (!--remaining){ //a and b finished... } }; a (finish); b (finish);