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 分钟前
深入理解 Python 中的模块(Module)
开发语言·python
wuk99832 分钟前
matlab为地图进行四色着色
开发语言·matlab
_MyFavorite_32 分钟前
cl报错+安装 Microsoft Visual C++ Build Tools
开发语言·c++·microsoft
charlie11451419133 分钟前
现代嵌入式C++教程:C++98——从C向C++的演化(2)
c语言·开发语言·c++·学习·嵌入式·教程·现代c++
zmzb010337 分钟前
C++课后习题训练记录Day55
开发语言·c++
李白同学40 分钟前
C++:继承
开发语言·c++
k***921641 分钟前
【C++】STL详解(九)—priority_queue的使用与模拟实现
开发语言·c++
速易达网络1 小时前
基于Java TCP 聊天室
java·开发语言·tcp/ip
沿着路走到底1 小时前
JS事件循环
java·前端·javascript
Hard but lovely1 小时前
C++11: 自定义异常&&标准异常体系&&回顾c异常处理方式
开发语言·c++