JS 异步编程都有哪些方案?
JS 的异步编程可以说在日常的前端业务开发中经常出现,你需要深刻理解其思路,才能更好地加以运用。
先一起来回想一下,我们在日常开发中都用过哪些 JS 异步编程的方式?总结起来无外乎有这几种:回调函数、事件监听、Promise、Generator、async/await,这几种 JS 的编程方式都是异步编程。回调函数方式是最早的 JS 异步编程的方式,后随着 ES 标准的发展,Promise、Generator 和 async/await 接连出现。关于这几种方式,我会在后面的课时中分别为你介绍。这一讲的目的是帮你回顾,并对此形成一个整体的认识。
那么在课程开始前请你先回想一下:
同步编程和异步编程的区别在哪里?
回调地狱有哪些方法可以解决?
我首先为你解答与此相关联的问题。
什么是同步?
所谓的同步就是在执行某段代码时,在该代码没有得到返回结果之前,其他代码暂时是无法执行的,但是一旦执行完成拿到返回值之后,就可以执行其他代码了。换句话说,在此段代码执行完未返回结果之前,会阻塞之后的代码执行,这样的情况称为同步。
什么是异步?
所谓异步就是当某一代码执行异步过程调用发出后,这段代码不会立刻得到返回结果。而是在异步调用发出之后,一般通过回调函数处理这个调用之后拿到结果。异步调用发出后,不会影响阻塞后面的代码执行,这样的情形称为异步。
JS 编程中为什么需要异步?
我们都知道 JavaScript 是单线程的,如果 JS 都是同步代码执行意味着什么呢?这样可能会造成阻塞,如果当前我们有一段代码需要执行时,如果使用同步的方式,那么就会阻塞后面的代码执行;而如果使用异步则不会阻塞,我们不需要等待异步代码执行的返回结果,可以继续执行该异步任务之后的代码逻辑。因此在 JS 编程中,会大量使用异步来进行编程,这也是我要专门讲解这部分的原因。