[js] 你是怎么理解js是异步的?

wuyuan
2023-05-21 04:33:49 星期日
js
                    
                        
你是怎么理解js是异步的?
Comments per page
< Page 1 / 1 >
Xiangnan-display 2023-05-26 08:39:38

在 JavaScript 中,异步指的是一种执行模式,它与同步(即阻塞式)执行相对。异步执行不会阻塞代码的运行,而是让代码在异步操作完成之前继续执行。

JavaScript 是单线程语言,即一次只能执行一个任务,但是异步执行使得 JavaScript 可以在等待异步操作完成期间继续执行其他任务。例如,发送 Ajax 请求、读取文件等异步操作可以被转化为异步回调函数,在异步操作完成后自动调用该函数。

在异步操作期间,JavaScript 引擎不会停止其他代码的执行,而是将其放入异步任务队列(event queue)中,等待异步操作完成后依次执行队列中的回调函数。这种机制被称为事件循环(event loop)。

由于异步操作时间不确定,因此无法在操作完成前阻塞代码的执行,否则会导致页面卡死、无响应等问题。通过异步执行,JavaScript 可以在异步操作完成前继续执行其他任务,从而避免出现这些问题。

因此,JavaScript 的异步机制使得代码执行效率更高,同时也带来了一些新的编码和调试技巧,例如 Promise、async/await 等。

QinYun932 2023-06-05 00:52:05

JavaScript (JS) 是一种异步的编程语言,这意味着它可以在执行某些操作时继续执行其他任务,而不需要等待这些操作完成。这种异步的特性使得 JS 可以处理并发任务、提高性能并改善用户体验。

传统的同步编程模型中,代码按照顺序执行,每个操作都要等待前一个操作完成后才能进行。如果有一个操作非常耗时,那么整个程序会被阻塞,用户界面也会冻结,给用户带来不好的体验。

异步编程模型允许代码在执行某个操作时,将其委托给系统或其他线程来处理,然后继续执行后续的代码。当操作完成时,系统会通知 JS 引擎,执行相应的回调函数或触发事件。这样,JS 可以在等待操作完成的同时,继续执行其他任务,包括处理用户交互、更新界面等。

在 JS 中,异步编程主要通过回调函数、Promise 和 async/await 这些机制来实现。

Ra-Liz 2023-07-10 08:31:41

了解异步,首先要知道JS是单线程的,当同步行为在执行栈中执行是挨个执行的,所以假设有一个大数for循环在执行栈中执行时,其后同步代码需要等待这个循环执行完毕后再执行,这类情况很容易发生阻塞。
因此,我们通常将一些耗时较长的,不影响后续逻辑的部分作为异步行为放置在异步队列中,通过函数调用等方式执行这些异步函数。异步使得JS代码执行更高效更灵活
常见的异步函数包括Promise setTimeout setInterval等 ;异步队列又分宏任务队列、微任务队列两种,定时器属于宏任务,期约属于微任务。

排行榜
今日答题答题排行
    未答的题
    更多>
      【关注作者公众号】 以面试驱动学习--前端剑解
      【公众号推荐】 不折腾的前端和咸鱼有什么区别

      学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布前端知识点(死磕自己,愉悦大家)。希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!欢迎大家关注3+1开源项目!希望大家每人去学习与思考!(不要为了谁而来,要为自己而努力!

      【关注官方公众号】 每天4:30-5:00推送
      【公众号推荐】 一起折腾前端算法
      【微信学习群】 备注3+1