当我使用promises来表示作业之间的依赖关系时,解析后的值变得不重要,我可能会忘记某个地方的返回.例:
startSomething().then(function() { Q.all(tasks.map(function(task) { return task.startIt(); })) }).then(collectOutput).done();
这里Q.all
返回一个承诺,我本应该返回.不这样做意味着collectOutput
在调用时,所有任务都已启动,但无法保证它们已完成.
这种错误导致竞争条件,并且可能极难再现和追踪.所以我想知道,是否有一些工具可以帮助检测并避免这种问题?也许有些promise库会在一个函数返回undefined时发出警告?或者检测没有听众的承诺,Bluebird对未处理拒绝的方式呢?