【发布时间】:2017-09-29 19:54:02
【问题描述】:
我有一个按顺序执行的承诺链。但是我想延迟其中一个,并且在延迟的一个完成之前不让其他的执行。我该如何做到这一点?我尝试了 setTimeOut 但似乎承诺链是异步的,因此超时没有按预期工作。
var p = Promise.resolve("Hello");
p.then((result) => {
console.log(result);
console.log("========== Then Block 1");
return "how are you";
}).then((result)=>{
console.log(result);
console.log("========== Then Block 2");
return "I'm Fine! Thank you"
}).then((result) => {
setTimeout(function(){
console.log("Time out Done!");
}, 3000);
console.log(result);
console.log("========== Then Block 3");
}).then(()=>{
console.log("========== Then Block 4");
})
这打印:
"Hello"
"========== Then Block 1"
"how are you"
"========== Then Block 2"
"I'm Fine! Thank you"
"========== Then Block 3"
"========== Then Block 4"
"Time out Done!"
我想要的是:
"Hello"
"========== Then Block 1"
"how are you"
"========== Then Block 2"
"I'm Fine! Thank you"
"Time out Done!"
"========== Then Block 3"
"========== Then Block 4"
【问题讨论】:
-
setTimeout 本身是异步的。
标签: javascript promise settimeout