异步
把异步理解成为一种目的 —— 不需要通过阻塞当前线程来等待某一操作的完成,而是继续执行接下来的逻辑,直到那个操作完成之后回调通知当前线程。
我们常常把同步和异步放在一起说明,是因为它们分别描述了两种不同的任务执行策略(等待 or 不等待)。
举个例子——比如我们现在正在凹总力战(主线程),忽然想要烧水喝水(某一个耗时的操作)。按照同步的执行顺序,我们需要挂起总力战(暂停游戏),等待水烧开之后再喝,才可以继续 Gaming。
这不是一种效率很高的做法
那么在异步中,我们可以在系统执行烧水的同时,继续凹总力战,等到水烧开的时候,会发起一个回调函数通知我们水烧开了,此时就可以直接喝水,非常的好使。
或许这样看有点类似多线程 —— 我们把烧水作为一个新的线程去执行。但是实际上多线程只是一种实现异步的手段。对应的,对单线程并发也可以实现异步操作(比如协程,对当前线程进行分时复用)。
综上所述,异步是一种目的,我们有多种手段去实现它,比如开多线程,但是最重要的异步体现还是回调函数