我正在开展一个项目,在这个项目中,我需要创建一个连续的Node流程,该流程在没有结束时间的情况下反复执行一些基于承诺的任务。第一个承诺周期必须在下一个开始之前完成。我不知道实施这个的最佳方式是什么,以及不同方法是否有利有弊。
到目前为止,我正在考虑的两个解决方案是:
递归函数:
var repeat = function () {
MethodThatReturnsAPromise()
.then(function () {
repeat();
});
};
repeat();
使用节点eventemitter
var events = require('events');
var eventEmitter = new events.EventEmitter();
var run = function () {
MethodThatReturnsAPromise()
.then(function () {
eventEmitter.emit('complete');
});
};
eventEmitter.on('complete', function () {
run();
});
run();
目前,我倾向于采用基于事件的方法。
有没有理由说明为什么这两种方法更加正确?或惯用于节点,或者它是否真的无关紧要(我只是在迷恋细节)?或者是否有第三种更好的实现方法,我不知道(我对节点很新)?