我在创建一个函数时遇到了一些麻烦。我有两个插座。我想写一个,它应该触发另一个开始输出。我想等到收到一个特定的保留令牌才能返回,同步和取消绑定事件监听器。
execute: function (command) {
check(command, String);
// wait for the "okay" message on the messages socket
this._messages.on('data', Meteor.bindEnvironment(function (data) {
// if nothing comes back in 10 seconds, time out.
Meteor.setTimeout(function () {
var parse = data.toString('ascii').split(':');
if (parse[0] === 'End') {
// Receiving 'End' means the command was successful unbind this event handler and return
return 0;
}
}, 10000);
return 1;
}));
// send the command to the command socket
this._commands.write(`XQ#${command}\r`);
}
我遇到的问题是强制它阻塞,直到收到这些数据,然后在收到适当的数据或超时时取消绑定回调。
我可能做错了。看起来好像在回调中取消注册回调基本上就像举起你已经坐过的椅子......但是处理这个用例的合适方法是什么?