The relevant question told me that resolving to a new promise, which is scheduled for the next loop even though it's immediately resolved. However, the comment part seems to be counter examples.
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);
})
weird in Chrome v61.0.3163.91, but normal in Node.js.
NOTE: the question is not the same with the popular one. Just focus on the order question: Why the different patterns produce different order? And explaination in terms of Event Loop would be preferred.