依赖节点中的多个异步资源

时间:2015-08-03 12:56:10

标签: javascript node.js sockets asynchronous

我有一个类需要两个套接字(我通过子类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();
  });
});

此方法是否适用于依赖异步资源?有更好的方法吗?

0 个答案:

没有答案