带条件的节点事件发射器

Node event emitter with condition

我有节点应用程序,当我可以 运行 其他逻辑时引发事件,例如 server.js 将在事件启动时发出事件(例如...),然后我引发此事件后应该是 运行 的逻辑

第一个文件

server.js -> runProcess -> finish -> emit event

第二个文件

listen to the event -> run new process

问题是 firstFile/server.js 只 运行 一次而 secondFile 可以多次 所以第一次它工作正常但是第二个事件丢失了,代码将不会被调用...

这里是第一次调用,我需要在有活动的时候第一次调用

但是对于第二个文件中可以多次调用的proxy.web 所以第二次它失败了,因为事件不再从第一个未被调用的文件中引发...,我该如何克服这个问题?

 Actions.eventEmitter.on('Available', function () {
            proxy.web(req, res, {
                target: 'http://' + hostname + ':' + appPort
            });

    })

你可以使用 promises 来解决这个问题。 在 server.js 中添加此代码。

Actions.promiseAvailable = new Promise(function(resolve, reject) {
  Actions.eventEmitter.on('Available', function() {
    resolve();
  });
});

然后在你的第二个文件中你可以这样做

Actions.promiseAvailable.then(function() {
  //doSomething
});

缺点是您必须为每种类型的事件添加另一种方法。