美文网首页
【管子先生的Node之旅·13】Node中的JavaScript

【管子先生的Node之旅·13】Node中的JavaScript

作者: 管子先生 | 来源:发表于2017-10-30 13:59 被阅读0次

    事件

    Node 中如何像浏览器中的 JavaScript 一样去定义和触发事件的呢?为此,Node 暴露了Event EmitterApi,该API上定义的 onemitremoveListener 方法,可以为我们提供这些服务。他们以process.EventEmitter形式暴露出来:

        var EventEmitter = require('events').EventEmitter;
        var event = new EventEmitter();
        // 为指定事件注册一个监听器
        event.on('Animal', function(name) {
           console.log('我看到了' + name);
        });
        // 触发监听器
        event.emit('Animal', '单身狗');
    

    执行结果:

    image.png

    这个 API 相比 DOM 下的更简洁很多,Node 中使用,你也可以方便的添加到自己的类里面:

        var EventEmitter = require('events').EventEmitter;
    
        function Animal() {};
    
        Animal.prototype.__proto__ = EventEmitter.prototype;
    
        var animal = new Animal();
     
        animal.on('a', function(name) {
            console.log('此次进来的是:' + name);
        })
    
        animal.emit('a', '程序猿');
    

    执行结果:

    image.png

    如果你只想某个事件被触发一次,可以采用下面这个方法:

        var EventEmitter = require('events').EventEmitter;
        var event = new EventEmitter();
    
        event.once('Animal', function(name) {
            console.log('我看到了' + name);
        });
    
        event.emit('Animal', '单身狗');
        event.emit('Animal', '铲屎官');
    

    执行结果:

    image.png

    BUFFER

    buffer 是一个表示固定内存分配的对象(也就是说,你要放东西前,先把位置腾出来),它就好比是一个由八位字节元素组成的数据,可以有效的在 JavaScript 中表示二进制数据。

        //先创建一个空间
        var h = new Buffer(256);
        //写入数据
        h.write('程序猿');
        //读取数据
        h.toString();
    

    相关文章

      网友评论

          本文标题:【管子先生的Node之旅·13】Node中的JavaScript

          本文链接:https://www.haomeiwen.com/subject/forppxtx.html