https://cnodejs.org/topic/55321e571b9662da568db8c2 看了这篇帖子 回复里有提到EventEmitter实现异步 请问具体是怎么做到的 ----------------------------------- var util = require(“util”); var events = require(“events”);//EventEmitter通过events模块来访问 function asyncEvent() {//新建一个类 events.EventEmitter.call(this); } util.inherits(asyncEvent, events.EventEmitter);//使这个类继承EventEmitter asyncEvent.prototype.log = function(data) {//定义一个新方法 this.emit("data", data);//在此触发名为"data"事件 console.log(‘Hi’); } var s = new asyncEvent(); s.on("data", function(data,callback) {//注册监听器,监听名为"data"事 for(var i = 0; i < 1000000; i++); console.log(‘Received data: "’ + data + ‘"’); }); s.log(“Hi”); // Received data: "It works!"ss ----------------------------------- 比如上面这篇代码 我执行log, 然后log执行里面的emit, 但是我发现代码执行时里面那个console.log(“Hi”)比emit要后执行 也就是说他是等待emit执行完了再执行的. 请问如果我想让事件异步执行该怎么做,谢谢
var util = require('util');
var events = require('events');
function eventEmitter() {
events.EventEmitter.call(this);
}
util.inherits(eventEmitter, events.EventEmitter);
var ee = new eventEmitter();
ee.on('data', function(data) {
process.nextTick(function(){
console.log(data);
});
});
ee.emit('data', 'f1');
console.log('f2');
如果不介意的话可以看下我的一篇博客