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等

相关推荐
Pyroyster5 分钟前
【Go语言圣经1.5】
开发语言·golang·xcode
最后一个bug35 分钟前
C语言为例谈数据依赖性
linux·c语言·开发语言·arm开发·stm32
m0_5557629041 分钟前
QT中的布局管理
开发语言·qt
island131444 分钟前
【QT】事件系统入门——QEvent 基础与示例
开发语言·qt
vvvae12341 小时前
MATLAB代码开发实战:从入门到高效应用
开发语言·matlab
努力学习的小廉1 小时前
【C++】 —— 笔试刷题day_4
开发语言·c++
一袋米扛几楼982 小时前
【JavaScript 】1. 什么是 Node.js?(JavaScript 服务器环境)
服务器·javascript·node.js
前端付杰2 小时前
第八节: 全面理解vue3: 工具函数的核心作用与使用方法
前端·javascript·vue.js
努力学习的小廉2 小时前
【C++】 —— 笔试刷题day_3
开发语言·c++
Anlici2 小时前
虚拟dom 源码分析一下
前端·javascript·前端框架