相关疑难解决方法(0)

节点退出时没有错误,并且没有等待承诺(事件回调)

我有一个非常奇怪的问题,等待一个已经通过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进程正常终止.

我认为这是什么做的垃圾收集器,但evtask显然还是在范围main.所以我真的不知道为什么这个过程完全没有错误地退出.

很显然,我最终发出的事件,但我已经简化我的代码上面的重现.我在node v8.7.0.我的代码有问题还是这个节点错误?

javascript node.js promise

15
推荐指数
1
解决办法
1822
查看次数

标签 统计

javascript ×1

node.js ×1

promise ×1