我有一个非常奇怪的问题,等待一个已经通过resolve事件 - 发射器回调的Promise 只是退出进程而没有错误.
const {EventEmitter} = require('events');
async function main() {
console.log("entry");
let ev = new EventEmitter();
let task = new Promise(resolve=>{
ev.once("next", function(){resolve()}); console.log("added listener");
});
await task;
console.log("exit");
}
main()
.then(()=>console.log("exit"))
.catch(console.log);
process.on("uncaughtException", (e)=>console.log(e));
Run Code Online (Sandbox Code Playgroud)
我期待这个过程在我运行时暂停,因为显然"next"当前从未发出过.但我得到的输出是:
条目
添加了听众
然后nodejs进程正常终止.
我认为这是什么做的垃圾收集器,但ev并task显然还是在范围main.所以我真的不知道为什么这个过程完全没有错误地退出.
很显然,我会最终发出的事件,但我已经简化我的代码上面的重现.我在node v8.7.0.我的代码有问题还是这个节点错误?