[英]node.js handling unset error event
我正在處理一個發出事件的模塊,其中一個是“錯誤”事件。
例如:
function A() {}
function A.prototype.start() {
var error = true;
if (error) {
this.emit('error', error);
}
return this;
}
var a = new A()
a.on('error', function(err) {})
發生的事情是,即使我正在偵聽錯誤事件,也會發出該事件,我想應該在偵聽器注冊或this
的返回之前。 我所做的是將發射包裝在setImmediate
,例如:
function A.prototype.start() {
var error = true;
if (error) {
setImmediate(function() {
this.emit('error', error);
});
}
return this;
}
作為一般慣例,這可以嗎? 還是建議使用更好的方法來處理這種情況和類似情況。
這是很好的解決方案。
EventEmitter
事件是純JS的,不會在事件循環中安排; 它們是同步交付的。
在您的情況下,您在沒有偵聽器之前發出事件,因為僅在發出事件之后才添加偵聽器。 如果“等待”事件循環的下一輪,則使用setImmediate()
,基本上可以將事件的發出推遲到添加偵聽器之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.