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等

相关推荐
何中应9 小时前
【面试题-2】Java集合
java·开发语言·后端·面试题
a程序小傲9 小时前
scala中的Array
开发语言·后端·scala
WXG10119 小时前
【Flask-8】程序打包
开发语言·python
kk哥88999 小时前
scala 介绍
开发语言·后端·scala
Pyeako9 小时前
python中pandas库的使用(超详细)
开发语言·python·pandas
new出一个对象9 小时前
uniapp手写滚动选择器
开发语言·前端·javascript
迈巴赫车主9 小时前
蓝桥杯 20531黑客java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯
阿拉伯柠檬9 小时前
C++中的继承
开发语言·数据结构·c++·面试
有点。9 小时前
C++ ⼀级 2025 年09 ⽉
开发语言·c++
2501_941982059 小时前
复杂消息格式自动化:图片、视频和自定义卡片的消息体构造
开发语言·php