相关问题告诉我,将Promise解决为一个新的Promise,即使它立即被解决,也会在下一个循环中调度。然而,评论部分似乎是反例。
var p1 = Promise.resolve("p1")
/* console order will be "p2" "p1" */
// pattern1
// var p2 = Promise.resolve(Promise.resolve("p2"));
// pattern2
// var p2 = Promise.resolve(new Promise(function(resolve, reject){
// resolve("p2")
// }))
/* console order will be "p1" "p2" */
// pattern3
var p2 = new Promise(function(resolve, reject){
resolve(Promise.resolve("p2"));
})
p2.then(function(value){
console.log(value);
})
p1.then(function(value){
console.log(value);
})
在Chrome v61.0.3163.91版本中表现奇怪,但在Node.js中正常。 注意:这个问题与流行的问题不同。只关注顺序问题:为什么不同的模式产生不同的顺序?最好用事件循环的术语来解释。
.then()
先被调用。 - guest271314