nodejs event模块如何使用
让异步操作变成同步
var Event = require("events").EventEmitter;
var ev = new Event(); //实例化events
事件1
ev.once("error", function () {
return;
});
ev.once("FindId", function () {
User.findByName(username, function (err, docs) {
if (err) {
emitter.emit("error");
}
var arr = docs[0].resource;
var length = arr.length;
console.log(length)
arr.forEach((id) => {
ev.emit("findInfo", id, length);
});
});
});
//事件2
ev.on("findInfo", function (id, length) {
Resource.findAuthority(id, function (err, docs) {
if (err) {
emitter.emit("error");
}
obj.info.push(docs[0]);
ev.emit("getinfo", length);
});
});
ev.on("getinfo", function (length) {
try {
if (obj.info.length == length) {
ev.removeAllListeners();
return res.send(obj);
} else {
return;
}
} catch (e) {}
});
ev.emit("FindId");