异步编程的实现方式?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

异步编程的实现方式?

剑曼红尘 2020-04-06 15:56:41 258

异步编程的实现方式?

分享到
取消 提交回答
全部回答(1)
  • 剑曼红尘
    2020-04-06 15:57:12

    相关资料:

    回调函数 优点:简单、容易理解 缺点:不利于维护,代码耦合高

    事件监听(采用时间驱动模式,取决于某个事件是否发生): 优点:容易理解,可以绑定多个事件,每个事件可以指定多个回调函数 缺点:事件驱动型,流程不够清晰

    发布/订阅(观察者模式) 类似于事件监听,但是可以通过‘消息中心’,了解现在有多少发布者,多少订阅者

    Promise 对象 优点:可以利用 then 方法,进行链式写法;可以书写错误时的回调函数; 缺点:编写和理解,相对比较难

    Generator 函数 优点:函数体内外的数据交换、错误处理机制 缺点:流程管理不方便

    async 函数 优点:内置执行器、更好的语义、更广的适用性、返回的是 Promise、结构清晰。 缺点:错误处理机制

    回答:

    js 中的异步机制可以分为以下几种:

    第一种最常见的是使用回调函数的方式,使用回调函数的方式有一个缺点是,多个回调函数嵌套的时候会造成回调函数地狱,上下两层的回调函数间的代码耦合度太高,不利于代码的可维护。

    第二种是 Promise 的方式,使用 Promise 的方式可以将嵌套的回调函数作为链式调用。但是使用这种方法,有时会造成多个 then 的链式调用,可能会造成代码的语义不够明确。

    第三种是使用 generator 的方式,它可以在函数的执行过程中,将函数的执行权转移出去,在函数外部我们还可以将执行权转移回来。当我们遇到异步函数执行的时候,将函数执行权转移出去,当异步函数执行完毕的时候我们再将执行权给转移回来。因此我们在 generator 内部对于异步操作的方式,可以以同步的顺序来书写。使用这种方式我们需要考虑的问题是何时将函数的控制权转移回来,因此我们需要有一个自动执行 generator 的机制,比如说 co 模块等方式来实现 generator 的自动执行。

    第四种是使用 async 函数的形式,async 函数是 generator 和 promise 实现的一个自动执行的语法糖,它内部自

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章