学习记录,不喜勿喷,个人理解,欢迎指正
异步与同步的概念就先不说了,因为这些在网上都有,烂大街了...
下面进入正题!!!
异步与同步
- JavaScript主线程同步任务依次执行
- 将异步任务委托给宿主环境进行执行
- 已完成的异步任务根据对应的回调函数,依次进入待执行队列
- 主线程执行栈被清空后会依次读取任务队列中的回调函数
- 主线程依次执行4步骤
根据上述步骤,可以看一下这个题
主线程中的任务是
宿主环境一的任务是
宿主环境二的任务是
Promise
const p = new Promise((reslove,reject)=>{
if(true){
reslove('123')
}else{
reject('error')
}
}).then((res)=>{
console.log(res)//'123'
}).catch((err)=>{
console,log(err)//'error'
})
不难看出.then执行的是reslove返回的结果,.catch执行的是reject的返回结果 强调一下,Promise本身是同步的,但是.then和.catch是异步的
Async/Await
个人理解的是async是异步,await相当于是同步 await的作用是将异步改为同步,依次执行。