关于事件的一点小总结
生活随笔
收集整理的這篇文章主要介紹了
关于事件的一点小总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
nodejs中很多對象具有監聽和發送事件的功能,是因為繼承了EventEmitter對象。
總結的一點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的對象就可以發送和監聽事件了。
做個小例子,建一個Sender類,每隔1s創建一個sender對象,每個對象都監聽一個send事件。三個對象之后,觸發事件發生,就每隔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(){ //監聽事件,事件觸發,開始執行監聽器函數debugger;setInterval(function(){debugger;console.log('sender ' + sender.id);}, 1000);}); senderArr.push(sender); //添加進數組}else {debugger;senderArr.forEach(function(sender){ sender.emit('send');//觸發事件});debugger;clearInterval(inter_id);//清楚interval,需要指定id} }, 1000);
有幾個知識點:
1. setInterval ?和 clearInterval(id)
setInterval()會返回一個id,刪除這個interval需要這個id.
2.數組的使用,以及遍歷
var senderArr = [];senderArr.push(sender);senderArr.forEach(function(client){});3.事件觸發
sender.once('send', function() {........ });sender.emit('send');
?監聽事件有一些方法,如on(),once()等。
注意:觸發,和監聽的對象要相同,如代碼綠色提示部分。
?
轉載于:https://www.cnblogs.com/yilinfengluo/p/4687905.html
總結
以上是生活随笔為你收集整理的关于事件的一点小总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Objective-C知识总结(5)
- 下一篇: (软件工程复习核心重点)第六章实现和测试