同步
一个人同一时间只能做一件事情,只有一件事情做完,才能做另一件事情。
即上一行代码执行完成后,才能执行下一行代码。
异步
一个人事情做了一半,转而去做其他事情,当其他事情做完以后,再回过头做之前未完成的事情。
就是异步代码虽然要花时间去执行,但程序不会等待异步代码执行完成后再继续执行后续代码,而是直接执行后续代码,当后续代码执行完成后再回头看异步代码是否返回结果,如果已有返回结果,再调用事先准备好的回调函数处理异步代码执行的结果。
回调函数
+ 什么是回调函数 ?
+ 是一种函数的应用方式
+ 是出现在两个函数之间的关系
=> 在你调用 a 函数的时候, 把 b 函数当作参数传递进去
=> 在 a 函数里面使用形参的方式调用 b 函数
+ 这个行为就叫做 回调函数
+ 为什么要使用回调函数 ?
+ 为了在 异步 的末尾做某些事情的时候使用
=> 如果你的代码全都是同步代码, 那么不需要回调函数
例子:
+ 前提: 一个人一次只能做一个事情(单线程)
=> 假如他在走路, 就不能接电话
=> 假如他在喝水, 就不能眨眼
+ 需求: 我想让这个人去帮我买一个报纸
=> 我就要告诉他你去买报纸
=> 这个人做的事情就是走路去买报纸
=> 如果我想让他在买完报纸以后,再买一个水
=> 两个解决方案
-> 1. 在一开始就全部都告诉他, 先买报纸再买水(全都同步进行)
-> 2. 在他出发去买报纸之前, 给他一个 "锦囊", 告诉他买完报纸把锦囊打开照做(异步回调)
=> 锦囊: 被当作参数传递到另一个函数里面的 回调函数(callback)