mirror of
https://github.com/apachecn/eloquent-js-3e-zh.git
synced 2025-05-23 20:02:20 +00:00
11.
This commit is contained in:
parent
85ca50a2bd
commit
209f399002
22
11.md
Normal file
22
11.md
Normal file
@ -0,0 +1,22 @@
|
||||
# 十一、异步编程
|
||||
|
||||
> 孰能浊以澄?静之徐清;
|
||||
>
|
||||
> 孰能安以久?动之徐生。
|
||||
>
|
||||
> 老子,《道德经》
|
||||
|
||||
计算机的核心部分称为处理器,它执行构成我们程序的各个步骤。 到目前为止,我们看到的程序都是让处理器忙碌,直到他们完成工作。 处理数字的循环之类的东西,几乎完全取决于处理器的速度。
|
||||
|
||||
但是许多程序与处理器之外的东西交互。 例如,他们可能通过计算机网络进行通信或从硬盘请求数据 - 这比从内存获取数据要慢很多。
|
||||
|
||||
当发生这种事情时,让处理器处于闲置状态是可耻的 - 在此期间可以做一些其他工作。 某种程度上,它由您的操作系统处理,它将在多个正在运行的程序之间切换处理器。 但是,我们希望单个程序在等待网络请求时能做一些事情,这并没有什么帮助。
|
||||
|
||||
## 异步
|
||||
|
||||
在同步编程模型中,一次只发生一件事。 当您调用执行长时间操作的函数时,它只会在操作完成时返回,并且可以返回结果。 这会在您执行操作的时候停止您的程序。
|
||||
|
||||
异步模型允许同时发生多个事件。 当你开始一个动作时,你的程序会继续运行。 当动作结束时,程序会受到通知并访问结果(例如从磁盘读取的数据)。
|
||||
|
||||
我们可以使用一个小例子来比较同步和异步编程:一个从网络获取两个资源然后合并结果的程序。
|
||||
|
Loading…
x
Reference in New Issue
Block a user