【发布时间】:2015-02-12 19:47:18
【问题描述】:
我目前正在尝试将一些承诺与超时联系起来,无论达到哪个超时,它总是报告最后一个。我用 bluebird 和 Q 尝试过,结果相同,所以我认为我有一个普遍的问题。
代码基本上是这样的:
var Promise = require('bluebird');
Promise.delay(2000)
.then(function() {
return Promise.delay(2000);
})
.timeout(1000, 'Timeout 1')
.then(function() {
return Promise.delay(500);
})
.timeout(1000, 'Timeout 2')
.then(function() {
return Promise.delay(500);
})
.timeout(1000, 'Timeout 3');
我收到“未处理的拒绝超时错误:超时 3”。我想要的是获得超时 1。我尝试在每次超时后进行捕捉,但我得到的结果是一样的。
有没有办法让它工作而不完全拆分它?
【问题讨论】:
-
当您在同一时间段内有多个超时时,据我所知,无法保证它们会运行的顺序。
-
@BenjaminGruenbaum 事实上,即使他们没有相同的时间段,也根本无法保证。所以以这种方式使用计时器根本不起作用:>
标签: javascript node.js promise q bluebird