Promise的then是异步操作的回调,但如果连续调用then,并且不再then中添加任何异步操作,它是会直接当做同步代码处理吗?,在then1放入微任务队列后,then2和then3是何时放进去的,是一起吗?
new Promise((res, rej) => {
res()
}).then((v) => { // then1
console.log(1)
return 2
}).then(v => { // then2
console.log(v)
}).then(v => { // then3
console.log(v)
})
setTimeout(() => {
console.log('setr')
}, 0);
// 1
// 2
// undefined
// setr
还有下面的代码then返回promise执行结果与上面一样,是什么原因?求大佬解惑
let p = new Promise((res, rej) => {
res()
console.log('p')
}).then((v) => {
console.log(1)
return new Promise((res, rej)=>res(2))
}).then(v => {
console.log(v)
return new Promise((res, rej)=>res(3))
}).then(v => {
console.log(v)
})
setTimeout(() => {
console.log('setr')
}, 0);
console.log('global')
event loop
微任务队列清空了,然后再去看宏任务