什么是异步

JavaScript 是单线程。JavaScript 的任务可以分为两类:同步任务和异步任务。

同步任务在【主线程】上排队执行,只有前一个任务执行完毕,才能执行后一个任务。【主线程】的所有同步任务形成一个【执行栈】。

异步任务进入【任务队列】,只有【任务队列】通知【主线程】,某个异步任务可以执行了,该任务才会进入【主线程】执行。

一旦【执行栈】中的所有同步任务执行完毕,系统就会读取【任务队列】,然后那些对应的异步任务进入【执行栈】,开始执行。

异步代码的书写顺序与执行顺序不同。

同步:一定要等任务执行完了,得到结果,才执行下一个任务。

异步:不等任务执行完,直接执行下一个任务。

如果几个任务互相独立,其中一个执行时间较长,那么一般就用异步地方式做这件事。

什么是回调

一个函数作为参数被给另一个函数去调用,作为参数的函数就是回调函数。

一般来说,只要参数是一个函数,那么这个函数就是回调。

回调经常用于获取异步任务的结果。回调是拿到异步结果的一种方式。回调也可以拿同步结果。

回调和异步没有必然联系。