我正在使用 nodejs 并使用 q 模块学习承诺。
我认为我误解了delay()
q 模块中的 fn 。
当我运行此代码时:
chain
.then (function() {console.log('starting');})
.then (function() {console.log('waiting 2500ms');})
.delay(2500)
.then (function() {console.log('done');})
.then (function() {console.log('waiting 5500ms');})
.delay(5500)
.then (function() {console.log('done');})
.then(function() {console.log('waiting 4500ms');})
.delay(4500)
.then (function() {console.log('done');})
.then(function() { process.exit(0);});
我希望看到指定时间的延迟。
第一次延迟似乎发生了。
第二个延迟似乎并不是 5500 毫秒。
第三次延迟,预计为 4500 毫秒,似乎根本没有发生。
我将“延迟(x)”理解为“然后,延迟 x 毫秒”。这是不正确的吗?我是不是误会了?
如果我修改代码以替换delay(x)
每个
.then(function() {sleep.usleep(x * 1000);})
...然后它按我的预期工作。
有人可以解释一下吗?谢谢。