如何保证node.js脚本处于活动状态,同时承诺正在解决?

我的脚本使用promise(使用q库)执行一些asynchronous任务。 运行摩卡testing工作正常。 但是从命令行运行脚本不会。 节点进程立即死亡。

var bot = require('./bot'); bot.getCategories().then(function (categories) { console.log('Found ' + categories.length + ' categories'); }); 

我的脚本使用promise(使用q库)执行一些asynchronous任务。 运行摩卡testing工作正常。 但是从命令行运行脚本不会。 节点进程立即死亡。

这当然是一个错误,请报告。 Node.js环境不应该提前退出,而事件循环中仍然有东西在排队。

你不应该改变你的代码一点点发生。 Q库(请记住,现在有更多的现代和本地替代品)在process.nextTick “microtask”队列上安排asynchronouscallback。 您的bot库大概也会执行IO,这些事情都应该导致节点不终止。

当没有更多的callback要处理时,Node.js将会退出。 您可以使用setInterval或setTimeout来始终保持一个,这样进程不会自动退出。

 function wait () { if (!EXITCONDITION) setTimeout(wait, 1000); }; wait();