[javascript] 什麼是“事件發射器”?



Answers

在node.js中,事件可以簡單地描述為具有相應回調的字符串。 可以多次“發出”(或者換句話說,相應的回調被調用)事件,或者您可以選擇僅在第一次發出事件時進行偵聽。

例:-

var example_emitter = new (require('events').EventEmitter);
example_emitter.on("test", function () { console.log("test"); });
example_emitter.on("print", function (message) { console.log(message); });
example_emitter.emit("test");
example_emitter.emit("print", "message");
example_emitter.emit("unhandled");

> var example_emitter = new (require('events').EventEmitter);
{}
> example_emitter.on("test", function () { console.log("test"); });
{ _events: { test: [Function] } }
> example_emitter.on("print", function (message) { console.log(message); });
{ _events: { test: [Function], print: [Function] } }
> example_emitter.emit("test");
test //console.log'd
true //return value
> example_emitter.emit("print", "message");
message //console.log'd
true    //return value
> example_emitter.emit("unhandled");
false   //return value

這展示了EventEmitter所有基本功能。 on or addListener方法(基本上是訂閱方法)允許您選擇要監視的事件和要調用的回調。 另一方面, emit方法(發布方法)允許您“發出”一個事件,這會導致註冊到事件的所有回調都“觸發”(被調用)。

來自什麼是事件發射器?

Question

通過http://microjs.com瀏覽,我看到許多標記為“事件發射器”的庫。 我喜歡認為我非常了解javascript語言的基礎知識,但我真的不知道“事件發射器”是什麼或者做什麼。

有人關心開導我嗎? 聽起來很有趣...




考慮一個回叫功能 -

function test(int a, function(){
     console.log("I am call-back function");
   }){
    console.log("I am a parent function");
 }

現在,每當在事件(按鈕單擊或任何連接等)上調用父函數時,它首先執行其代碼,然後將控制傳遞給回調函數。 現在,事件發射器是一個對象/方法,一旦發生某些動作就會觸發事件,以便將cntrol傳遞給父函數。 例如,Server是Node.Js編程中的事件發射器。 一旦服務器遇到將控制傳遞給錯誤父函數的錯誤,它就會發出錯誤事件。 一旦套接字連接到服務器,服務器就會發出連接事件,然後此事件會觸發getConnections的父函數,這實際上也會將回調函數作為參數。 所以,它確實是一個鏈,它是由事件發射器觸發的,它發出事件以啟動一個函數運行。




Related