首页前端开发正文

JS引擎不能同时做两件事

朱绪2021-11-21673JavaScript

可能有的人会说,异步是同时做两件事,但其实JS引擎不会这样。

JavaScript的世界里只有一个线程,没有同时做两件事的能力。

比方说setTimeout,setTimeout里面的代码一定会在当前环境中的任务执行完了之后才执行。(setInterval同理)

setTimeout并非异步调用,所谓的“异步调用”,只是因为它往js引擎的待处理任务队列末尾插入代码,看起来像“异步调用”而已。

异步意味着不等待任务结束,并没有强制要求两个任务同时进行。

但AJAX请求是可以与JS代码同时进行的,因为该请求并非由JS引擎负责,而是由浏览器的网络请求模块负责的。