2016 - 2024

感恩一路有你

在Node.js中使用async函数的方法

浏览量:4853 时间:2024-02-01 20:23:12 作者:采采

在Node.js中使用async函数可以使基于Promise的异步代码看起来像同步代码一样。通过使用async关键字来定义一个函数,你可以在函数内部使用await关键字。当调用一个async函数时,它会返回一个Promise。如果这个async函数返回一个值,那么Promise就会被解决;如果函数中抛出一个错误,那么Promise就会被拒绝。

await关键字的用法

await关键字可以等待一个Promise被解决并返回其实现的值。如果传递给await的值不是一个Promise,它会将该值转化为一个已解决的Promise。

迁移到async函数

如果你的Node.js应用程序已经在使用Promise,只需要将原先的链式调用改写为使用await来处理这些Promise。如果应用程序仍在使用回调函数,则应逐步转向使用async函数。可以在开发新功能时尝试使用这项新技术。当需要调用旧有的代码时,可以简单地将它们包装成Promise并以新的方式调用。可以使用内建的方法来实现:

async函数的最佳实践

在express中使用async函数比较简单,因为express本身就支持Promise。但正如Keith Smith所指出的,如果Promise最终被拒绝而没有进行错误处理,那么express路由处理器就会被挂起。为了解决这个问题,可以将异步处理器包裹在一个处理错误的函数中。

并行执行

有时候,在编写程序时需要同时获取来自数据库和外部服务的两个输入,然后再进行支付。由于前两步之间没有相互依赖关系,可以将它们并行执行。可以使用方法来实现:

使用Promise.race方法

有时候,只需要获得最快返回的Promise的值,可以使用Promise.race方法。考虑以下例子:

当执行这段代码时,如果Promise被拒绝且未进行处理,较新版本的Node.js会中断整个进程。因此,在必要的情况下应该使用try-catch来处理异常。

复杂的流程控制

async是一个在Node.js中用于异步流程控制的早期库。它提供了一些帮助工具来控制异步操作,比如mapLimit,filterLimit,concatLimit以及priorityQueue。如果你不想重新发明轮子,并且愿意信任这个经过实践验证、每月下载量高达5000万的库,你可以结合来简单地重用这些函数。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。