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等

相关推荐
lsx2024061 分钟前
Java 数组
开发语言
JosieBook4 分钟前
【C#】VS中的 跨线程调试异常:CrossThreadMessagingException
开发语言·c#
爱滑雪的码农7 分钟前
Java八:Character 类与string类
java·开发语言
csbysj20207 分钟前
《C 标准库 - 参考手册》
开发语言
APIshop24 分钟前
京东关键词搜索接口完全指南
java·开发语言·数据库
追雨潮33 分钟前
BGE-M3 多语言向量模型实战:.NET C# 从原理到落地
开发语言·c#·.net
海天一色y34 分钟前
三分支声学超结构传输特性计算:格林函数法的完整MATLAB实现与深度解析
开发语言·matlab
喜欢喝果茶.39 分钟前
Qt翻译接口 -逐条翻译(免费级)
开发语言·python
顶点多余39 分钟前
QT-设计师模式基本知识
开发语言·qt
南 阳42 分钟前
Python从入门到精通day60
开发语言·python