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等

相关推荐
我胖虎不答应!!10 分钟前
Three.js开发思想笔记
javascript·笔记·three.js
游乐码20 分钟前
UnityGUI(五)GUI控件综合使用
开发语言·unity·c#
程序leo源22 分钟前
C语言知识总结
c语言·开发语言·c++·经验分享·笔记·青少年编程·c#
沫璃染墨24 分钟前
二叉搜索树完全指南:从核心原理到增删查改全实现
开发语言·c++
shehuiyuelaiyuehao26 分钟前
关于进程和线程的关系
java·开发语言
一颗趴菜28 分钟前
微信小程序如何去下载PDF呢
前端·javascript
AaronCos36 分钟前
弄懂java泛型中的extends和super
java·开发语言
毋语天38 分钟前
Python 模块、包与异常处理:构建更稳健的程序
开发语言·python
IT观察者1 小时前
Qt单例的优雅实现
开发语言·qt
H_unique1 小时前
LangChain:消息
开发语言·langchain