如何在解决承诺的同时保持node.js脚本活动?

Kee*_*ter 12 node.js promise

我的脚本使用promises(使用q库)执行一些异步任务.运行摩卡测试工作正常.但是,从命令行运行脚本则不行.节点进程立即死亡.

var bot = require('./bot');

bot.getCategories().then(function (categories) {
  console.log('Found ' + categories.length + ' categories');
});
Run Code Online (Sandbox Code Playgroud)

Hyo*_*yun 10

当没有更多的回调要处理时,Node.js将退出.您可以使用setInterval或setTimeout始终保留一个,以便进程不会自动退出.

function wait () {
   if (!EXITCONDITION)
        setTimeout(wait, 1000);
};
wait();
Run Code Online (Sandbox Code Playgroud)


Ben*_*aum 7

我的脚本使用promises(使用q库)执行一些异步任务.运行摩卡测试工作正常.但是,从命令行运行脚本则不行.节点进程立即死亡.

这肯定是个错误,请报告.在事件循环中仍然排队的事物中,Node.js环境不应过早退出.

为了实现这一点,你不应该改变你的代码.Q库(请记住,今天有更多的现代和本机替代方案)在process.nextTick"微任务"队列上安排异步回调.您的bot库可能也会执行IO,这些都应该导致节点不能终止.