JS运行机制

本文深入解析JavaScript的运行机制,包括其单线程特性、异步处理、任务队列与事件循环的概念,以及浏览器中的多线程协作。通过例子阐述异步操作的执行顺序,帮助理解JavaScript执行上下文和事件循环的重要性。
摘要由CSDN通过智能技术生成

​👩‍🚀​ 摘要:本文循序渐进串联起JS运行机制相关的主要概念。从JS是单线程开始讲起,到JS为了提高效率,使用异步,到JS如何实现异步,再到浏览器是如何配合JS执行异步。

一、JS是单线程。

所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个。不妨叫它主线程

选择单线程的原因之一是JS要操作DOM,如果多线程可能造成执行混乱。比如,有要删除节点的函数,有要编辑节点的。万一多线程执行顺序乱了先删除后编辑,就会出错。

二、JS的异步

单线程使得JS引擎只能一个任务结束再执行下一个,如果某任务时间较长,就会发生阻塞。为了解决这个问题。JS也使用了异步编程。

先简单介绍下同步(synchronous)和异步(asynchronous)。

同步和异步通常是用来形容一个函数被调用时发生的行为。

同步函数被调用时,调用必须获得预期结果后,才能继续后续行为。

而异步函数被调用时,异步函数的调用会很快完成,异步任务通常会被放到其他线程中执行。调用者就可以继续后续的操作,而不必等待这个任务执行完成,才运行。比如,下面这个ajax函数(使用jquery),

$.ajax({
   
    url:"data.txt";
    async:true; //默认为true,异步
    success:function(data){
   
      console.log(data;)
    };
});
console.log('you are the best');

读取文件中数据这个任务,会被放到其他线程中去执行。等有结果再在控制台输出data。在未获得结果前,后面函数也可以执行。所以会是先输出’you are the best’,在输出文件内容。

JS的异步实现机制呢,就是我们在主线程(强调:在JS引擎中负责解释和执行JavaScript代码的唯一线程)外,新开一个线程用来执行那些异步任务,我们暂且称为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值