- 《JavaScript再出发》系列文章阅读
- 《仙宗》发布招仙贴,广招天下道友
文章目录
JavaScript异步与回调
一、前言
在学习本文内容之前,我们必须要先了解异步的概念,首先要强调的是异步和并行有着本质的区别。
-
并行,一般指并行计算,是说同一时刻有多条指令同时被执行,这些指令可能执行于同一
CPU
的多核上,或者多个CPU
上,或者多个物理主机甚至多个网络中。 -
同步,一般指按照预定的顺序依次执行任务,只有当上一个任务完成后,才开始执行下一个任务。
-
异步,与同步相对应,异步指的是让
CPU
暂时搁置当前任务,先处理下一个任务,当收到上个任务的回调通知后,再返回上个任务继续执行,整个过程无需第二个线程参与。
也许用图片的方式解释并行、同步和异步更为直观,假设现在有A、B两个任务需要处理,使用并行、同步和异步的处理方式会分别采用如下图所示的执行方式:
二、异步函数
JavaScript
为我们提供了许多异步的函数,这些函数允许我们方便的执行异步任务,也就是说,我们现在开始执行一个任务(函数),但任务会在稍后完成,具体完成时间并不清楚。
例如,setTimeout
函数就是一个非常典型的异步函数,此外,fs.readFile
、fs.writeFile
同样也是异步函数。
我们可以自己定义一个异步任务的案例,例如自定义一个文件复制函数copyFile(fro