Nodejs Guides

Posted Merrys

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs Guides相关的知识,希望对你有一定的参考价值。

EVENTS

events模块API实例 

const EventEmitter = require(‘events‘);

class MyEmitter extends EventEmitter {
}
//EventListener 会按照监听器注册的顺序同步地调用所有监听器。
//所以需要确保事件的正确排序且避免竞争条件或逻辑错误。
//监听器函数可以使用 setImmediate() 或 process.nextTick() 方法切换到异步操作模式:
const myEmitter = new MyEmitter();
myEmitter.on(‘event‘, (a, b) => {
    setImmediate(() => {
        console.log(‘这个是异步发生的‘);
    });
});
myEmitter.on(‘event1‘, () => {
    console.log(‘触发了一个事件1!‘);
});
myEmitter.on(‘event2‘, () => {
    console.log(‘触发了一个事件2!‘);
});
//eventEmitter.once() 方法时可以注册一个对于特定事件最多被调用一次的监听器。 当事件被触发时,监听器会被注销,然后再调用。
let m = 0;
myEmitter.once(‘event3‘, () => {
    console.log(++m);
});
//当EventEmitter 实例中发生错误时,会触发一个 ‘error‘ 事件。 这在 Node.js 中是特殊情况。
//最佳实践,应该始终为 ‘error‘ 事件注册监听器。
myEmitter.on(‘error‘, (err) => {
    console.error(‘有错误‘);
});
//emitter.prependListener() 方法可用于将事件监听器添加到监听器数组的开头。
myEmitter.prependListener(‘event‘, () => console.log(‘b‘));
//添加一个单次 listener 函数到名为 eventName 的事件的监听器数组的开头。 下次触发 eventName 事件时,监听器会被移除,然后调用。
myEmitter.prependOnceListener(‘event‘, (stream) => {
    console.log(‘c‘);
});
myEmitter.emit(‘error‘, new Error(‘whoops!‘));
myEmitter.emit(‘event3‘);
myEmitter.emit(‘event3‘);
myEmitter.emit(‘event‘);
myEmitter.emit(‘event2‘);
myEmitter.emit(‘event1‘);
myEmitter.emit(‘event‘);
const EventEmitter = require(‘events‘);
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();

//this指向MyEmitter
// myEmitter.on(‘event‘, function (a, b) {
//     console.log(a, b, this);
// });

//this指向空对象
myEmitter.on(‘event‘, (a, b) => {
    console.log(a, b, this);
    // 打印: a b {}
});

myEmitter.emit(‘event‘, ‘a‘, ‘b‘);
const EventEmitter = require(‘events‘);

class MyEmitter extends EventEmitter {
}

const myEmitter = new MyEmitter();
// 当EventListener 所注册的事件发生的时候,该方法会被调用
myEmitter.once(‘newListener‘, (event, listener) => {
    if (event === ‘event‘) {
        // 在开头插入一个新的监听器
        myEmitter.on(‘event‘, () => {
            console.log(‘B‘);
        });
    }
});
myEmitter.on(‘event‘, () => {
    console.log(‘A‘);
});
myEmitter.emit(‘event‘);
myEmitter.emit(‘event‘);
const EventEmitter = require(‘events‘);
class MyEmitter extends EventEmitter {
}
const myEmitter = new MyEmitter();
// 在事件触发后、最后一个监听器完成执行后,从名为 eventName 的事件的监听器数组中移除指定的 listener。
const callbackA = () => {
    console.log(‘A‘);
    myEmitter.removeListener(‘event‘, callbackB);
};
const callbackB = () => {
    console.log(‘B‘);
};
myEmitter.on(‘event‘, callbackA);

myEmitter.on(‘event‘, callbackB);

myEmitter.emit(‘event‘);
myEmitter.emit(‘event‘);

 

以上是关于Nodejs Guides的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs Guides

Nodejs Guides

text https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/

nodejs常用代码片段

使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面

javascript 用于在节点#nodejs #javascript内设置react app的代码片段