带条件的节点事件发射器
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
});
缺点是您必须为每种类型的事件添加另一种方法。
我有节点应用程序,当我可以 运行 其他逻辑时引发事件,例如 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
});
缺点是您必须为每种类型的事件添加另一种方法。