簡體   English   中英

node.js處理未設置的錯誤事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM