[英]Is it bad practice to emit events with callbacks as arguments in node?
在节点中使用回调作为参数来发出事件是不好的做法吗?
var someonesListened = self.emit('doSomething', param, callback);
if (!someonesListened) {
callback();
}
// in another module somewhere
this.on('doSomething', function(param, callback) {
// Something async....
// Then sometime later
callback();
})
编辑:写完这个问题后,我意识到,通过为事件提供连续回调,可以被多个侦听器拦截,这会破坏目标,因此我认为我不会采用这种方法。
不,如果您知道自己在做什么,这不是一个坏习惯。
但是请记住,此回调可以多次调用,也可以根本不调用,这取决于有多少个侦听器。 如果可以的话,请务必使用回调。
我必须尝试在两行之间阅读,但看来您有以下要求:
假设是这种情况,可以使用如下方法:
// define a callback that will exit early if it has already been invoked,
// AND will invoke itself after a 10 second delay, if no one else has.
var hasRun = false, timeoutId = setTimeout(callback, 10000);
function callback() {
if (hasRun) return;
hasRun = true;
clearTimeout(timeoutId);
// do something cool
}
self.emit('some-event', callback);
但是,当然,我可能完全误解了您的要求:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.