[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語言的基本方法很好,但我真的不知道“事件發射器”是什麼或做什麼。

任何人都在照顧我? 聽起來很有趣...




node.js中的簡單示例:

    var EventEmitter = require('events').EventEmitter;
    var concert = new EventEmitter;
    var singer = 'Coldplay';

    concert.on('start', function (singer) {
        console.log(`OMG ${singer}!`);
    });

    concert.on('finish', function () {
        console.log(`It was the best concert in my life...`);
    });

    concert.emit('start', singer);
    concert.emit('finish');