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等

相关推荐
小则又沐风a3 分钟前
C++内存管理 C++模板
开发语言·c++
不会写DN3 分钟前
如何给 Go 语言的 TCP 聊天服务加上 ACK 可靠送达机制
开发语言·tcp/ip·golang
小李云雾7 分钟前
FastAPI 后端开发:文件上传 + 表单提交
开发语言·python·lua·postman·fastapi
llm大模型算法工程师weng13 分钟前
Python敏感词检测方案详解
开发语言·python·c#
fengci.14 分钟前
php反序列化(复习)(第二章)
android·开发语言·学习·php
ZHENGZJM15 分钟前
后端基石:Go 项目初始化与数据库模型设计
开发语言·数据库·golang
拾贰_C17 分钟前
【Claude Code | bash | install】安装Claude Code
开发语言·bash
苏瞳儿17 分钟前
前端/后端-配置跨域
前端·javascript·node.js·vue
会编程的土豆19 分钟前
【数据结构与算法】堆排序
开发语言·数据结构·c++·算法·leetcode
竹林81822 分钟前
从轮询到订阅:我在 React 项目中实现实时监听 ERC-20 转账事件的完整踩坑记录
前端·javascript