de의 이벤트 (이벤트) 회고

3607 단어
데드에서 트리거할 수 있는 모든 이벤트 대상은 이벤트의 실례화(new EventEmitter)입니다.EventEmitter 인스턴스화된 객체의 on() 스니퍼 이벤트를 사용하면 객체가 트리거하는 명명된 이벤트에 하나 이상의 함수를 결합할 수 있으며, 일반적으로 이벤트 이름은 로프 문자열입니다.emit () 귀속 이벤트를 통해 트리거 이벤트를 명명합니다.
// 
const  event = require('events');
const emitter = new event.EventEmitter();

// 
function  eventDemo(args){
    console.log("    "+args);
}
emitter.on('demo', eventDemo);

// 
emitter.emit('demo','234');

이벤트 속성: 1, 최대 감청 이벤트 수(defaultMaxListeners)
const event = require('events');
console.log('  '+event.defaultMaxListeners);

2. 이벤트 newListener(내장 이벤트, 자동 촉발 감청기)
const event = require('events');
const emitter = new event.EventEmitter();

emitter.on('newListener', function(event, listener){
    console.log(" !"+event);
});
emitter.on('a', function(){
    console.log('a  !');
});
emitter.on('a', function(){
    console.log('b  !');
});

emitter.emit('a');

removeListener (이벤트 제거) removeAllListeners (모든 감청 이벤트 제거)
const  event = require('events');
const emitter = new event.EventEmitter();

emitter.on('removeListener', function(event, listener){
      console.log(event+' !!');
});
emitter.on('a', function(){
      console.log('a  !');
});
emitter.on('b', function(){
      console.log('b  !!');
});

emitter.removeAllListeners();

속성: on (이벤트 감청기 추가) addListener on () 방법의 별명 once () 이벤트는 한 번만 터치할 수 있습니다
const event = require('events');
const emitter = new event.EventEmitter();

emitter.once('a', function(){
        console.log('a  !!!');
});
emitter.emit('a');
emitter.emit('a');

prependListener() 우선 로드prependOnceListener 우선 로드
const event = require('events');
const emitter = new event.EventEmitter();

emitter.on('a', function(){
    console.log('a  !!');
});

emitter.on('a', function(){
    console.log('b  !');
});

emitter.prependListener('a', function(){
    console.log('c  !');
});
emitter.emit('a');

이벤트 프로토타입 체인 확장:
// 1
var listener1 = function listener1(arg) {
    console.log("listener1:" + arg);
}
// 
var EventEmitter = require('events').EventEmitter;
function Client() {}
Client.prototype.a = function() {
    console.log("a");
}
Client.prototype.__proto__ = EventEmitter.prototype;
var client = new Client();
client.a();   //a
client.on('extend', listener1)
client.emit('extend', "Hello World");     // listener1:Hello World

이벤트 es6 확장 예:
//loginEvent.js
const EventEmitter = require('events');
class UserBean extends EventEmitter{
    constructor(username, password){
        super();
        this.username = username;
        this.password = password;
    }

    login(){
        if(this.username=='aa' && this.password=='123'){
            this.emit('success');
        }else{
            this.emit('error');
        }
    }
}
module.exports = UserBean;

//login.js
const User = require('./loginEvent');
const user = new User('a','123');

user.on('success', function(){
    console.log(' !');
});
user.on('error', function(){
    console.log(' !');
});

user.login();  // 

이상은 개인의 사건에 대한 이해 참고: 사건 사건

좋은 웹페이지 즐겨찾기