【发布时间】:2020-02-01 16:23:03
【问题描述】:
有两种情况,都返回 Promise 并与以下 then 方法链接。 但结果顺序不同。 一些注意事项: Promise.resolve(value) -> 返回立即履行的带有值的 Promise。 在 then 方法中,当我们再次返回值时,它会返回已完成的 Promise 和该值。 逻辑上应该没有区别。两者都是即时... 提前谢谢...
Promise.resolve(1)
.then((v) => {
console.log(v);
return Promise.resolve(v + 1);
})
.then((v) => {
console.log(v);
return Promise.resolve(v + 1);
})
.then((v) => {
console.log(v);
return v + 1;
})
.then((v) => {
console.log(v);
return v + 1;
});
Promise.resolve(10)
.then((v) => {
console.log(v);
return v + 1;
})
.then((v) => {
console.log(v);
return v + 1;
})
.then((v) => {
console.log(v);
return v + 1;
})
.then((v) => {
console.log(v);
return v + 1;
});
//Result on the console:
//1
//10
//11
//12
//2
//13
//3
//4
//
Promise.resolve(1)
.then((v) => {
console.log(v);
return v + 1;
})
.then((v) => {
console.log(v);
return v + 1;
})
.then((v) => {
console.log(v);
return v + 1;
})
.then((v) => {
console.log(v);
return v + 1;
});
Promise.resolve(10)
.then((v) => {
console.log(v);
return v + 1;
})
.then((v) => {
console.log(v);
return v + 1;
})
.then((v) => {
console.log(v);
return v + 1;
})
.then((v) => {
console.log(v);
return v + 1;
});
//Result on the console:
//1
//10
//2
//11
//3
//12
//4
//13
【问题讨论】:
-
其他异步任务的执行在实际应用中或多或少是未定义的。 (你可以进入微任务和事件循环的细节,但你为什么要这样做呢?)只要每个promise都返回预期的结果,你就不应该太在意when i> 它到了。
-
@deceze 谢谢。我只是想不明白它背后的逻辑)
标签: javascript promise