1、回调函数:js语言对异步编程的实现,就是回调函数,通过把任务的第二阶段单独放在一个函数里,等到执行这个任务时,直接调用。
缺点:多层嵌套时,代码横向发展,形成强耦合,若需要修改操作时就会形成“回调函数地狱”
2、promise:可以解决回调函数多层嵌套的问题,是一种新的写法,允许将回调函数的嵌套改成链式调用,来读取多个文件。then方法将异步操作的两段执行明确拆分。
缺点:代码冗余,一串then方法,语义变得不清楚
3、Generator:最大的特点就是“暂停机制”,将生成器函数与promise对象结合使用,达到了书写形式上的“化异步为同步”,更具有语义化。
缺点:与async对比。
4、async:就是Generator函数的语法糖,本质上就是将generator函数和自动执行器进行了封装。解决了回调地狱,语义也更清晰,await命令后可以跟promise对象和原始类型的值(适用性更广),实现了将异步代码改造成同步代码。
缺点:如果多个异步代码没有依赖性确使用了async,会使代码性能降低。