异步并不意味着同时做两件事

有的人对「异步」这个概念产生了误解,认为异步是同时做两件事,其实不是的,因为JS引擎根本就没有能力同时做两件事。

异步

就拿setTimeout来说,setTimeout里的代码一定会在当前环境中的任务执行完了「之后」才执行。

「异步」只是说不用等待任务结束,并没有说强制要求两个任务「同时」进行。

但我们有时候会在一些实际代码中发现,AJAX 请求似乎是和 JS 代码同时进行的。

这是因为,这个 AJAX 请求并不是由「JS 引擎」负责,而是由浏览器的网络模块负责。

我以前刚开始学习js的时候一直以为异步就是同时做两件事,也是后来才知道,原来 AJAX 请求是由浏览器的网络请求模块负责的。。。

很多人会说,JavaScript很简单。其实,JS 里面的难点还是不少的,建议好好阅读《JavaScript高级程序设计》这本书,好好打基础。