事件循环:
宏任务一般包括:整体代码script,setTimeout,setInterval。
微任务:Promise,process.nextTick先执行
**先同步再取出第一-个宏任务执行所有的相关微任务总会在下个宏任务之 前全部执行完毕 如果遇见就
先微后宏**
let promise=new Promise(()=>{
console.log('Promise')
resolve()
})
setTimeout(()=>{
console.log(1)
},0)
setTimeout(()=>{
console.log(2)
})
let promise2=new Promise(()=>{
console.log('Pomise2')
resolve()
})
promise2.then(()=>{
console.log('resloved2')
})
promise.then(()=>{
console.log('resolved')
})
new Promise 声明后会立即执行 或者 Promise.reslove()也会立即执行 Promise一旦被定义,就会立即执行
promise.then(()=>{
这里里面属于微任务
})
Promise优先于setTimeout宏任务。所以 ,setTimeout回调会在最后执行。
Promise一旦被定义,就会立即执行。
Promise的reject和resolve是异步执行的回调。所以,resolve()会被放到回调队列中,在主函数执行完和setTimeout前调用。
async 告诉程序这是一个异步操作,await 是一个操作符,即 await 后面是一个表达式
await 执行完后,会让出线程。async标记的函数会返回一个Promise对象
async ,会立即执行Promise对象,造成同步的函数,按顺序执行
await 返回一个Promise.reslove(),会立即执行,并返回结果,不推入微任务内
这两个搭配执行后,就会返回resolve()状态