js高阶-async与事件循环

async函数

与普通函数的区别

复制代码
1.可以正常调用
2.返回值是一个promise
3.抛出异常,不影响后续代码执行
js 复制代码
// 3.抛出异常,返回的Promise对象为rejected状态

async function foo(){

    throw new Error("我是错误");

}

foo().catch(err=>{

    console.log(err);

  }

)

console.log("可以继续执行");

await 关键字

await 后面跟promise对象,

会暂停async函数的执行,等待promise状态改变

事件循环

js是单线程的,同一时间只能做一件事情

当遇到耗时长操作当前线程就会被阻塞

于是,出现异步操作
异步操作交给浏览器其他线程来处理,

处理完后将异步任务放入事件队列

js引擎在调用栈为空的时候会检测事件队列,从中取任务执行

这个过程事件循环

宏任务与微任务

事件队列,分为宏任务队列与微任务队列
js会先检查微任务队列,执行完后,在检查宏任务队列

宏任务

setTimeOut,ajax,UI Rendering,Dom监听等
微任务

Promise的then回调,queueMicroTask,Mutation Api等

相关推荐
JIngJaneIL14 小时前
基于springboot + vue房屋租赁管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
期待のcode15 小时前
Java的抽象类和接口
java·开发语言
wadesir15 小时前
Go语言中高效读取数据(详解io包的ReadAll函数用法)
开发语言·后端·golang
南山安15 小时前
Tailwind CSS:顺风CSS
javascript·css·react.js
小高不明16 小时前
前缀和一维/二维-复习篇
开发语言·算法
龘龍龙16 小时前
Python基础(八)
开发语言·python
栀秋66616 小时前
防抖 vs 节流:从百度搜索到京东电商,看前端性能优化的“节奏哲学”
前端·javascript
有意义16 小时前
深入防抖与节流:从闭包原理到性能优化实战
前端·javascript·面试
幺零九零零17 小时前
Golang-Swagger
开发语言·后端·golang
2503_9284115617 小时前
12.26 小程序问题和解决
前端·javascript·微信小程序·小程序