首页ee-first,one of the Top 100 most popular or depended-upon nodejs packages
Created At : 2021-12-3
Last Updated: 2021-12-3

ee-first

作用

返回一组事件中第一个触发的事件,同时也可以进行取消

安装

$ npm install ee-first

引入

var first = require('ee-first')

API

first(arr, listener)

  • 第一个参数arr必须为数组,数组中的元素也必须是数组,格式为:[ee, ...event],且不少于两个参数,否则会报类型错误
  • 当arr数组元素中的事件列表中的事件首次触发时,listener监听器会调用。
  • listener监听器只会调用一次。
  • 如果事件列表中有error事件,且是最先触发,listener会接收err参数。
  • listener监听器,接收四个参数 listener(err, ee, event, args),err是当error事件触发时的参数,ee是触发的事件,event是触发事件的事件名称,args是触发事件时传递的参数

使用方法

var ee1 = new EventEmitter()
var ee2 = new EventEmitter()

first([
  [ee1, 'close', 'end', 'error'],
  [ee2, 'error']
], function (err, ee, event, args) {
  // listener invoked
})

.cancel()

取消first(arr, listener) arr 事件列表中绑定的事件。实际上是调用了removeListener方法

var thunk = first([
  [ee1, 'close', 'end', 'error'],
  [ee2, 'error']
], function (err, ee, event, args) {
  // listener invoked
})

// cancel and clean up
thunk.cancel()

实战提示1

var EventEmitter = require('events').EventEmitter;
var first = require('./index.js');

var ee1 = new EventEmitter();
var ee2 = new EventEmitter();

ee2.on('error',function(){
    console.log("错误发生了");
})

var thunk = first([
  [ee1, 'close', 'end', 'error'],
  [ee2, 'error','zdyEv']
], function (err, ee, event, args) {
    // listener invoked
    if(err){
        console.log("err:-----------");
        console.log(err);
    }else{
        console.log(ee);
        console.log("event 名:"+event);
        console.log(args);
    }
})

//thunk.cancel();  若先调用cancel(),则不会有任何输出
ee1.emit('close',"我是参数1");
ee2.emit('zdyEv',"我是参数2");

// 输入如下:
EventEmitter {
  domain: null,
  _events: {},
  _eventsCount: 0,
  _maxListeners: undefined }
event 名:close
[ '我是参数1' ]

实战提示2

var EventEmitter = require('events').EventEmitter;
var first = require('./index.js');

var ee1 = new EventEmitter();
var ee2 = new EventEmitter();

ee2.on('error',function(){
    console.log("错误发生了");
})

var thunk = first([
  [ee1, 'close', 'end', 'error'],
  [ee2, 'error','zdyEv']
], function (err, ee, event, args) {
    // listener invoked
    if(err){
        console.log("err:-----------");
        console.log(err);
    }else{
        console.log(ee);
        console.log("event 名:"+event);
        console.log(args);
    }
})

//thunk.cancel();  若先调用cancel(),则不会有任何输出
ee1.emit('error',"我是参数1");
ee2.emit('zdyEv',"我是参数2");

// 输入如下:
错误发生了
err:-----------
我是参数2