【发布时间】:2013-04-15 05:20:19
【问题描述】:
我的问题是: “如何在所有异步函数完成工作后运行回调”
这里是一个例子:
function doTasks(**callback**) {
doTask1(function() {
...
});
doTask2(function() {
...
});
}
我不想一个接一个地运行一个任务。并行运行它们的想法,但我需要在完成后立即进行回调。 nodeJs 有内置功能吗?
现在我正在使用 EventEmitter 和计数器的组合。每次任务完成时,它都会运行一个事件。因为我知道已经运行了多少任务。我可以数数并发出回调。但必须采用更灵活的方式。这是我现在使用的。
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);
}
}
还有其他方法吗?
【问题讨论】:
标签: node.js asynchronous