异步与回调
什么是异步
JavaScript 是单线程。JavaScript 的任务可以分为两类:同步任务和异步任务。
同步任务在【主线程】上排队执行,只有前一个任务执行完毕,才能执行后一个任务。【主线程】的所有同步任务形成一个【执行栈】。
异步任务进入【任务队列】,只有【任务队列】通知【主线程】,某个异步任务可以执行了,该任务才会进入【主线程】执行。
一旦【执行栈】中的所有同步任务执行完毕,系统就会读取【任务队列】,然后那些对应的异步任务进入【执行栈】,开始执行。
异步代码的书写顺序与执行顺序不同。
同步:一定要等任务执行完了,得到结果,才执行下一个任务。
异步:不等任务执行完,直接执行下一个任务。
如果几个任务互相独立,其中一个执行时间较长,那么一般就用异步地方式做这件事。
什么是回调
一个函数作为参数被给另一个函数去调用,作为参数的函数就是回调函数。
一般来说,只要参数是一个函数,那么这个函数就是回调。
回调经常用于获取异步任务的结果。回调是拿到异步结果的一种方式。回调也可以拿同步结果。
回调和异步没有必然联系。