我们用js写代码肯定写过异步代码。
为什么js需要异步呢?只写同步代码不可以吗?
js需要异步的“根本原因”是:JS是单线程运行的。就是说,在同一时间只能做一件事,不可以“一心二用”。
比方说,一个Ajax请求由于网络比较慢,需要5秒钟。你如果用同步的话,这5秒钟页面就卡死在这里啥也干不了。
异步的话就好很多了,虽然5秒钟还是得等待,但其他事不耽误做。
我们来看一个关于单线程的例子:
请讲解一下下面代码的执行过程和结果。
var a = true setTimeout(function() { a = false; }, 100) while(a) { console.log('while执行了') }
这题非常具有迷惑性,可能有人会觉得,100ms后,由于a变成了false,所以while就中止了,其实并非如此。
大家要搞清楚:JS是单线程的!所以进入while循环后,没有时间(线程)去跑定时器了,所以这个代码跑起来是个死循环。