2012-08-31 80 views
1

我總是發現直接進入示例更容易。PubSub/Observer模式中的排隊事件

object.on('eventone', function() { 
    console.log('eventone - listener one'); 
    object.trigger('eventtwo'); 
}); 
object.on('eventone', function() { 
    console.log('eventone - listener two'); 
}); 
object.on('eventtwo', function() { 
    console.log('eventtwo'); 
}); 
object.trigger('eventone'); 

在大多數PubSub的實現,這將導致以下日誌順序:

  1. eventone - 監聽一個
  2. eventtwo
  3. eventone - 監聽器2

在過去,這已經提出了這個序列的語義問題。通常開發人員會認爲'eventone'的所有聽衆在'eventtwo'開始之前已經開除,這可能會導致序列邏輯錯誤進一步向下。一個更明智的日誌順序很可能是:

  1. eventone - 監聽一個
  2. eventone - 監聽器2
  3. eventtwo

所以我想的問題是 - 爲什麼大多數的實現不遵循事件排隊?使用它有什麼可能的影響,而不是。

乾杯!

回答