zoukankan      html  css  js  c++  java
  • events(事件): 基础1

    1    所有能触发事件的对象都是 EventEmitter 类的实例。 这些对象开放了一个 eventEmitter.on() 函数,允许将一个或多个函数绑定到会被对象触发的命名事件上。 事件名称通常是驼峰式的字符串,但也可以使用任何有效的 JavaScript 属性名。

    当 EventEmitter 对象触发一个事件时,所有绑定在该事件上的函数都被同步地调用。

    注释:绑定的多个函数会以队列的形式被调用,由于是同步的所以

    const EventEmitter = require('events');
    
    let emitter = new EventEmitter();
    
    emitter.on('myEvent', () => {
      for(let i = 0; i < 5000; i ++) {
        console.log('ev1', i)
      }
    });
    
    emitter.on('myEvent', () => {
      console.log('hi 2');
    });
    emitter.emit('myEvent');
    /*

    输出结果
    ev1 0
    ev1 1
    ...
    ev1 4999
    hi 2
    asdaaa

    */

    const EventEmitter = require('events');
    
    let emitter = new EventEmitter();
    
    emitter.on('myEvent', () => {
      console.log('hi');
      emitter.emit('myEvent');
    });
    
    emitter.emit('myEvent');
    /*
    会产生死循环
    Maximum call stack size exceeded
    回调栈溢出
    调用堆栈的溢出(大小超过最大)
    */

    
    
    const EventEmitter = require('events');
    
    let emitter = new EventEmitter();
    
    emitter.on('myEvent', function sth () {
      emitter.on('myEvent', sth);
      console.log('hi');
    });
    
    emitter.emit('myEvent');
    /*
    监听器绑定会以2n的速度绑定,没几下就炸了

    */


  • 相关阅读:
    GIt-重置
    Git-对象
    Git-暂存区
    Git-Git初始化
    Git-起步
    调试九法-制造失败
    调试九法-理解系统
    readhat7.0 bond配置
    firewall-cmd 防火墙命令详解 及 TCP Wrappers
    RAID与LVM磁盘阵列技术
  • 原文地址:https://www.cnblogs.com/so-letitgo/p/8592365.html
Copyright © 2011-2022 走看看