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等

相关推荐
葡萄城技术团队4 小时前
InfluxDB 2\.x 深度解析:核心架构、Flux 函数与制造业落地指南(三)
java·开发语言·架构
counting money4 小时前
Java IO流详解:从InputStream到文件操作实战
java·开发语言·python
wuyk5554 小时前
98.C语言易混难点:字符数组与字符串指针的底层差异
c语言·开发语言·c++·stm32·嵌入式硬件·算法
峥无5 小时前
从0到1手撕红黑树:封装实现 my_map 与 my_set(SGI-STL 源码级深度解析)
开发语言·c++·笔记·算法·stl
波特率1152005 小时前
C++新特性---属性说明符与标准属性
开发语言·c++
程序员小八7775 小时前
上海百度B端java后端日常实习一面
java·开发语言
wp123_15 小时前
IPX8 防水 Type‑C连接器:安费诺 124018792112A 与 TONEVEE TY48087‑24A 技术梳理
c语言·开发语言
不会代码的小猴5 小时前
3. 控件学习1
开发语言·c++·笔记·qt·算法
fangzhanpeng1685 小时前
(前端)2.js变量作用域样例
开发语言·前端·javascript
码艺-Alimjan8 小时前
Vue项目源码备份最佳实践:无视node_modules,打包体积仅2MB
前端·javascript·vue.js