在节点中实现基于连续承诺的流程的最佳方法是什么?

时间:2015-09-12 17:11:54

标签: javascript node.js javascript-events eventemitter

我正在开展一个项目,在这个项目中,我需要创建一个连续的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();

目前,我倾向于采用基于事件的方法。

有没有理由说明为什么这两种方法更加正确?或惯用于节点,或者它是否真的无关紧要(我只是在迷恋细节)?或者是否有第三种更好的实现方法,我不知道(我对节点很新)?

0 个答案:

没有答案