events(事件): 基礎1

1    全部能觸發事件的對象都是 EventEmitter 類的實例。 這些對象開放了一個 eventEmitter.on() 函數,容許將一個或多個函數綁定到會被對象觸發的命名事件上。 事件名稱一般是駝峯式的字符串,但也可使用任何有效的 JavaScript 屬性名。函數

當 EventEmitter 對象觸發一個事件時,全部綁定在該事件上的函數都被同步地調用。ui

註釋:綁定的多個函數會以隊列的形式被調用,因爲是同步的因此spa

const EventEmitter = require('events'); let emitter = new EventEmitter(); emitter.on('myEvent', () => { for(let i = 0; i < 5000; i ++) { console.log('ev1', i) } }); emitter.on('myEvent', () => { console.log('hi 2'); }); emitter.emit('myEvent'); /*

輸出結果
ev1 0
ev1 1
...
ev1 4999
hi 2
asdaaa

*/

const EventEmitter = require('events'); let emitter = new EventEmitter(); emitter.on('myEvent', () => { console.log('hi'); emitter.emit('myEvent'); }); emitter.emit('myEvent'); /* 會產生死循環 Maximum call stack size exceeded 回調棧溢出 調用堆棧的溢出(大小超過最大) */

 
  
const EventEmitter = require('events'); let emitter = new EventEmitter(); emitter.on('myEvent', function sth () { emitter.on('myEvent', sth); console.log('hi'); }); emitter.emit('myEvent');/*監聽器綁定會以2n的速度綁定,沒幾下就炸了*/
相關文章
相關標籤/搜索