什么是 async/await 及其如何工作,有什么优缺点?

朱雀 2021-04-16 13:58 843阅读 0赞

async/await是一种建立在Promise之上的编写异步或非阻塞代码的新方法,被普遍认为是 JS异步操作的最终且最优雅的解决方案。相对于 Promise 和回调,它的可读性和简洁度都更高。毕竟一直then()也很烦。

async 是异步的意思,而 await 是 async wait的简写,即异步等待。

所以从语义上就很好理解 async 用于声明一个 function 是异步的,而await 用于等待一个异步方法执行完成。

一个函数如果加上 async ,那么该函数就会返回一个 Promise

可以看到输出的是一个Promise对象。所以,async 函数返回的是一个 Promise 对象,如果在 async 函数中直接 return 一个直接量,async 会把这个直接量通过 PromIse.resolve() 封装成Promise对象返回。

相比于 Promise,async/await能更好地处理 then 链

现在分别用 Promise 和async/await来实现这三个步骤的处理。

使用Promise

使用async/await

结果和之前的 Promise 实现是一样的,但是这个代码看起来是不是清晰得多,优雅整洁,几乎跟同步代码一样。

await关键字只能在async function中使用。在任何非async function的函数中使用await关键字都会抛出错误。await关键字在执行下一行代码之前等待右侧表达式(可能是一个Promise)返回。

优缺点:

async/await的优势在于处理 then 的调用链,能够更清晰准确的写出代码,并且也能优雅地解决回调地狱问题。当然也存在一些缺点,因为 await 将异步代码改造成了同步代码,如果多个异步代码没有依赖性却使用了 await 会导致性能上的降低。

发表评论

表情:
评论列表 (有 0 条评论,843人围观)

还没有评论,来说两句吧...

相关阅读

    相关 CAS 什么优缺点

    CAS 简单介绍:比较并交换(compareAndSet),将当前工作内存的值与主内存进行比较,如果一致则进行交换,不一致则继续读取主内存最新的值,下面给出 CAS 简单使用的

    相关 RabbitMQ什么优缺点

    为什么使用MQ?MQ的优点 简答 异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。 应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。 流量削锋 -

    相关 索引什么优缺点

    索引是一种在数据库中用于提高查询性能的技术,它通过为数据库表的关键字段或字段组合创建指针来优化查询。以下是对索引优缺点的一些理解: 优点: 1. 查询性能提升:索引使得数

    相关 MQ什么优缺点

    MQ(消息队列)是一种常用的软件间通信技术,用于在应用程序之间传递消息。MQ有以下几个主要的优点和缺点: 优点: 1. 异步通信:消息队列允许多个处理程序并行处理消息,这

    相关 Redis什么优缺点

    Redis的优点 1.纯内存操作。 2.单线程操作,避免了频繁的上下文切换。 3.采用了非阻塞I/O多路复用机制。 I/O多路复用机制:I/O多路复用就是只有单个线程,