Promise和异步编程

72 阅读1分钟

JavaScript中的四种异步机制

回调函数的方式

  • 缺点:多个回调函数嵌套的时候会造成回调函数地狱,上下两层的回调函数间的代码耦合度太高,不利于代码的可维护

Promise的方式

  • 使用Promise的方式可以将嵌套的回调函数作为链式调用
  • 缺点:会造成多个then的链式调用,造成代码语义不够明确

generator的方式

  • 可以在函数的执行过程中,将函数的执行权转移出去,在函数外部可以将执行权转移回来,当遇到异步函数执行的时候,将函数执行权转移出去,当异步函数执行完后再将执行权给转移回来,因此在generator内部对于异步操作的方式可以用同步的顺序来写
  • 缺点:需要考虑何时将函数的控制权转移回来,因此需要一个自动执行generator的机制,比如说co模块等方式来实现generator的自动执行

async的方式

  • async是generator和promise实现的一个自动执行的语法糖,它内部自带执行器,当函数内部执行到一个await语句的时候,如果语句返回一个promise对象,那么函数将会等待promise对象的状态变成resolve后再继续向下执行,因此可以将异步逻辑转化为同步的顺序来写,并且该函数可以自动执行

------------------------------------------------------------------------------2024.5.14每日一题