JavaScript---异步函数async内部运行机制

本文介绍了JavaScript的运行机制,包括宏任务和微任务,并详细解析了Async函数的内部运行过程。通过一个示例代码,分析了await如何影响微任务的执行顺序,帮助读者深入理解异步编程的本质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Async函数是ES7引入的用来操作异步的函数,在语法上,Async 函数与Generator 函数非常的类似,在对象性质上,Async 函数与Promise对象又是密不可分的。

一、JavaScript的运行机制

在我们探究Async函数内部运行机制执行,我们不得不来先说一说JavaScript这门语言的的运行机制。JavaScript的执行是单线程的,单线程的异步,其实只是按照某种规则以同步的方式分配利用CPU,而产生的异步效果。
在JavaScript内部,我们可以划分出来两种任务类型:

1.宏任务(macro-task)

类似:包括整体代码script,setTimeout,setInterval这样的语句都会开启一个宏任务,
当执行Script代码块时,则作为第一个宏任务启动。


每当启动一个宏任务,JavaScript都会将其置入一个称之为任务队列的任务池中,之后,一旦当前的宏任务结束时,线程将会在任务池中以任务置入的先后顺序来获取新的宏任务进入线程执行,周而复始,直至所有的宏任务结束。

需要注意的是:

如果当前的宏任务下有微任务,则执行完所有的微任务后才能空出线程,执行排在后面的宏任务

那么什么又是微任务呢?

2.微任务(micro-task)

类似: Promise 对象就是产生微任务的代表


每个微任务将会绑定到当前的宏任务下,微任务的置入以及取出机制与宏任务是一致的,但是,微任务在产生的同时还会绑定到当前运行的宏任务下面,也就是说,只有当前的微任务全部执行完毕,该宏任务才可能被执行结束。

每个微任务会被放入队列池(Event Queue),之后,线程若空出来则按放入的先后顺序执行

了解完JavaScript的运行机制,接下来就让我们来探究Async函数机制。


二、Async函数内部运行机制

理解下面代码运行:

function hh() {
   
   
	console.log("hhh");
	return "hhhhhhh";
}
async fun
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值