# 01-理解异步

# 同步函数

当一个函数同步调用时,该函数被调用时不会立即返回,直到该函数所要做的事情全部做完了才返回

# 异步函数

当一个异步函数被调用时,该函数会立即返回,尽管这个函数规定的操作任务还没有完成

# JavaScript 是单线程的

JS 是一门单线程非阻塞的脚本语言,这表示在同一时刻最多也只有一个代码段执行。

JS 是非阻塞的,那它要怎么实现异步任务呢,靠的就是事件循环(Event Loop)

# 为什么 JavaScript 是单线程的

这是由其执行的环境是浏览器环境所决定的。

试想一下如果 JavaScript 是多线程语言的话,那么当两个线程同时对 Dom 节点进行操作的时候,则可能会出现有歧义的问题,例如一个线程操作的是在一个 Dom 节点中添加内容,另一个线程操作的是删除该 Dom 节点,那么应该以哪个线程为准呢?

所以 JavaScript 作为浏览器的脚本语言,其设计只能是单线程的。