我有一个类需要两个套接字(我通过子类net.Socket
创建)。我创建了一个依赖于它们的课程。
let net = Npm.require('net');
let EventEmitter = Npm.require('events').EventEmitter;
class Cylon extends EventEmitter {
constructor(host, port) {
this._commands = new Cylon.Socket('commands', host, port); // read async messages through this one.
this._messages = new Cylon.Socket('messages', host, port); // send commands through this socket
}
execute(command) {
this._commands.write(`XQ #${command}`);
}
}
因为我依赖于这两者,所以我在管理异步事件时遇到了一些奇怪的问题。我尝试使用事件发射器来做这样的事情。
this._commands.on('connect', () => {
this._messages.on('connect', () => {
this.emit('connect', {
messages: this._messages,
commands: this._commands
});
});
});
我的测试似乎认为它有效。
Tinytest.addAsync('When connect event happens, all sockets should be connected', function (test, next) {
let cylon = new Cylon();
cylon.on('connect', (sockets) => {
test.isTrue(cylon.messages.connected);
test.isTrue(cylon.commands.connected);
next();
});
});
此方法是否适用于依赖异步资源?有更好的方法吗?