关于事件的一点小总结
nodejs中很多對(duì)象具有監(jiān)聽(tīng)和發(fā)送事件的功能,是因?yàn)槔^承了EventEmitter對(duì)象。
總結(jié)的一點(diǎn)demo:
var EventEmitter = require('events').EventEmitter; var util = require('util');var Client = function(id) { EventEmitter.call(this); //了解call的用法this.id = id;....}; util.inherits(Client, EventEmitter);綠色加粗的代碼很重要。
這樣,Client的對(duì)象就可以發(fā)送和監(jiān)聽(tīng)事件了。
做個(gè)小例子,建一個(gè)Sender類,每隔1s創(chuàng)建一個(gè)sender對(duì)象,每個(gè)對(duì)象都監(jiān)聽(tīng)一個(gè)send事件。三個(gè)對(duì)象之后,觸發(fā)事件發(fā)生,就每隔1s輸出自己的id。
var util = require('util'); var EventEmitter = require('events').EventEmitter;var Sender = function(id){ EventEmitter.call(this);this.id = id; };util.inherits(Sender, EventEmitter);//繼承EventEmitter,就是事件功能var count = 1;var senderArr = []; var inter_id = setInterval(function(){if(count < 3){var sender = new Sender(count++);console.log('sender count is ' + (count-1));sender.once('send', function(){ //監(jiān)聽(tīng)事件,事件觸發(fā),開(kāi)始執(zhí)行監(jiān)聽(tīng)器函數(shù)debugger;setInterval(function(){debugger;console.log('sender ' + sender.id);}, 1000);}); senderArr.push(sender); //添加進(jìn)數(shù)組}else {debugger;senderArr.forEach(function(sender){ sender.emit('send');//觸發(fā)事件});debugger;clearInterval(inter_id);//清楚interval,需要指定id} }, 1000);
有幾個(gè)知識(shí)點(diǎn):
1. setInterval ?和 clearInterval(id)
setInterval()會(huì)返回一個(gè)id,刪除這個(gè)interval需要這個(gè)id.
2.數(shù)組的使用,以及遍歷
var senderArr = [];senderArr.push(sender);senderArr.forEach(function(client){});3.事件觸發(fā)
sender.once('send', function() {........ });sender.emit('send');
?監(jiān)聽(tīng)事件有一些方法,如on(),once()等。
注意:觸發(fā),和監(jiān)聽(tīng)的對(duì)象要相同,如代碼綠色提示部分。
?
轉(zhuǎn)載于:https://www.cnblogs.com/yilinfengluo/p/4687905.html
總結(jié)
以上是生活随笔為你收集整理的关于事件的一点小总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Objective-C知识总结(5)
- 下一篇: (软件工程复习核心重点)第六章实现和测试