浅谈JavaScript中的同步和异步原理

本文探讨JavaScript作为单线程语言如何处理同步和异步任务。同步任务按顺序执行,而异步任务通过任务队列和事件循环机制在主线程空闲时执行,避免阻塞后续任务。通过代码示例解释了异步操作如何使用回调函数来处理。
摘要由CSDN通过智能技术生成

前段时间在前端岗位上实现请求后端接口时,JS中同步和异步这两个概念总困扰着我:究竟异步是什么呢?和同步有什么区别呢?通过细读几篇大佬的讲解后,终于明白了这两者的概念,今天就浅谈下我个人对同步和异步原理的理解。

一、单线程语言

在了解同步和异步之前,我们得先理解一些基本概念。首先,JavaScript是一门单线程的语言,意思就是,同一个时间只能执行一个任务。JS作为一种浏览器脚本语言,主要用处是与用户互动和操作DOM,产生的交互方式是单向且线性的。假设JS有两个线程同时运行,如果一个线程编辑了DOM,而另一个线程删除了DOM,那浏览器该如何执行呢?所以单线程就让浏览器只听取一个线程的执行,不会产生分歧。

二、同步和异步

在单线程中,所有任务需要排队,一个任务结束后,下一个任务才会开始。这与我们理解的代码执行顺序相似:一行代码执行完毕后,下一行代码才会执行。这就是同步

然而,在主线程排队的所有任务中,执行耗时有长有短:短的像console.log(),长的像ajax请求网络数据。那如果一个任务请求过大,把后面任务都堵死了怎么办?聪明的JS设计者发现,同步任务通常在CPU上计算,而耗时的异步任务占用在IO输入输出设备,互相不冲突。调用异步方法更像一个消息传递,一旦就会立即返回,在IO设备上挂起,主线程继续执行同步任务。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值