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