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的速度绑定,没几下就炸了

    */


  • 相关阅读:
    JS 的execCommand 方法 做的一个简单富文本
    机器学习入门
    code practice websites
    机器学习 入门参考资料
    const型变量与函数重载
    数组是否应该初始化?
    翻译:编译器内部的秘密微软的编译器是如何解析Try/Catch/Throw的
    在C++中用C#风格设置类的属性值

    记可敬可佩的老车同志
  • 原文地址:https://www.cnblogs.com/so-letitgo/p/8592365.html
Copyright © 2011-2022 走看看