当v是一个Promise实例
new Promise(r => r(v))
let v = new Promise(resolve => {
console.log("begin");
resolve("then");
});
new Promise(resolve => {
resolve(v);
}).then((v)=>{
console.log(v)
});
new Promise(resolve => {
console.log(1);
resolve();
})
.then(() => {
console.log(2);
})
.then(() => {
console.log(3);
})
.then(() => {
console.log(4);
});
输出:
原因:浏览器会创建一个 PromiseResolveThenableJob 去处理这个 Promise 实例,这是一个微任务
Promise.resolve(v)
let v = new Promise(resolve => {
console.log("begin");
resolve("then");
});
Promise.resolve(v).then((v)=>{
console.log(v)
});
new Promise(resolve => {
console.log(1);
resolve();
})
.then(() => {
console.log(2);
})
.then(() => {
console.log(3);
})
.then(() => {
console.log(4);
});
输出:
原因:Promise.resolve()会直接返回这个promise实例,不会做任何处理