返回顶部
首页 > 资讯 > 精选 >Node.js中如何使用async函数
  • 188
分享到

Node.js中如何使用async函数

2023-07-05 00:07:13 188人浏览 八月长安
摘要

本文小编为大家详细介绍“node.js中如何使用async函数”,内容详细,步骤清晰,细节处理妥当,希望这篇“node.js中如何使用async函数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是 async

本文小编为大家详细介绍“node.js中如何使用async函数”,内容详细,步骤清晰,细节处理妥当,希望这篇“node.js中如何使用async函数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

什么是 async 函数

利用 async 函数,你可以把基于 Promise 的异步代码写得就像同步代码一样。一旦你使用 async 关键字来定义了一个函数,那你就可以在这个函数内使用 await 关键字。当一个 async 函数被调用时,它会返回一个 Promise。当这个 async 函数返回一个值时,那个 Promise 就会被实现;而如果函数中抛出一个错误,那么 Promise 就会被拒绝。

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

const rp = require('request-promise')async function main () { const result = await rp('https://Google.com') const twenty = await 20 // 睡个1秒钟 await new Promise (resolve => {  setTimeout(resolve, 1000) }) return result}main() .then(console.log) .catch(console.error)

向 async 函数迁移

如果你的 Node.js 应用已经在使用Promise,那你只需要把原先的链式调用改写为对你的这些 Promise 进行 await。

如果你的应用还在使用回调函数,那你应该以渐进的方式转向使用 async 函数。你可以在开发一些新功能的时候使用这项新技术。当你必须调用一些旧有的代码时,你可以简单地把它们包裹成为 Promise 再用新的方式调用。

要做到这一点,你可以使用内建的 util.promisify方法:

const util = require('util')const {readFile} = require('fs')const readFileAsync = util.promisify(readFile)async function main () { const result = await readFileAsync('.gitignore') return result}main() .then(console.log) .catch(console.error)

Async 函数的最佳实践

在 express 中使用 async 函数

express 本来就支持 Promise,所以在 express 中使用 async 函数是比较简单的:

const express = require('express')const app = express()app.get('/', async (request, response) => { // 在这里等待 Promise // 如果你只是在等待一个单独的 Promise,你其实可以直接将将它作为返回值返回,不需要使用 await 去等待。 const result = await getContent() response.send(result)})app.listen(process.env.PORT)

但正如 Keith Smith 所指出的,上面这个例子有一个严重的问题——如果 Promise 最终被拒绝,由于这里没有进行错误处理,那这个 express 路由处理器就会被挂起。

为了修正这个问题,你应该把你的异步处理器包裹在一个对错误进行处理的函数中:

const awaitHandlerFactory = (middleware) => { return async (req, res, next) => {  try {   await middleware(req, res, next)  } catch (err) {   next(err)  } }}// 然后这样使用:app.get('/', awaitHandlerFactory(async (request, response) => { const result = await getContent() response.send(result)}))

并行执行

比如说你正在编写这样一个程序,一个操作需要两个输入,其中一个来自于数据库,另一个则来自于一个外部服务:

async function main () { const user = await Users.fetch(userId) const product = await Products.fetch(productId) await makePurchase(user, product)}

在这个例子中,会发生什么呢?

你的代码会首先去获取 user,

然后获取 product,

最后再进行支付。

如你所见,由于前两步之间并没有相互依赖关系,其实你完全可以将它们并行执行。这里,你应该使用 Promise.all 方法:

async function main () { const [user, product] = await Promise.all([  Users.fetch(userId),  Products.fetch(productId) ]) await makePurchase(user, product)}

而有时候,你只需要其中最快被解决的 Promise 的返回值——这时,你可以使用 Promise.race 方法。

读到这里,这篇“Node.js中如何使用async函数”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Node.js中如何使用async函数

本文链接: https://lsjlt.com/news/348402.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Node.js中如何使用async函数
    本文小编为大家详细介绍“Node.js中如何使用async函数”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node.js中如何使用async函数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是 async...
    99+
    2023-07-05
  • Node.js 中使用 async 函数的方法
    借助于新版 V8 引擎,Node.js 从 7.6 开始支持 async 函数特性。今年 10 月 31 日,Node.js 8 也开始成为新的长期支持版本,因此你完全可以放心大胆地在你的代码中使用 asy...
    99+
    2022-06-04
    函数 方法 Node
  • 如何在Node.js中使用async函数的方法详解
    目录前言什么是 async 函数向 async 函数迁移3 Async 函数的最佳实践在 express 中使用 async 函数并行执行前言 借助于新版 V8 引擎,Node.j...
    99+
    2022-12-19
    Node.js使用async函数 Node.js async
  • 在 Node.js 中使用 async 函数的方法
    借助于新版 V8 引擎,Node.js 从 7.6 开始支持 async 函数特性。今年 10 月 31 日,Node.js 8 也开始成为新的长期支持版本,因此你完全可以放心大胆地在你的代码中使用 asy...
    99+
    2022-06-04
    函数 方法 Node
  • Node中如何使用async函数
    本篇内容介绍了“Node中如何使用async函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是 async 函数利用 async 函数...
    99+
    2023-07-04
  • Node.js中async和await关键字如何使用
    本篇内容主要讲解“Node.js中async和await关键字如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js中async和await关键字如何使用”吧!async 和 aw...
    99+
    2023-07-02
  • Node.js 中如何使用回调函数
    今天就跟大家聊聊有关Node.js 中如何使用回调函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Node.js 回调函数Node.js 异步编程...
    99+
    2024-04-02
  • 如何在 Node.js 中使用 Go 函数?
    近年来,Go 语言在后端开发领域中越来越受到开发者的青睐。与此同时,Node.js 也是一个非常流行的 JavaScript 运行时环境,被广泛应用于开发服务器端应用程序。那么,如何在 Node.js 中使用 Go 函数呢?本文将详细介绍...
    99+
    2023-08-22
    npm 函数 javascript
  • node.js中如何使用async异步控制工具
    node.js中如何使用async异步控制工具,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。这两个操作中,第一个异步的程序我们可能会写成这...
    99+
    2024-04-02
  • Node.js中如何使用异步Generator函数
    本篇文章给大家分享的是有关Node.js中如何使用异步Generator函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。HTTP 框架分类首...
    99+
    2024-04-02
  • 如何使用Node.js中的回调函数
    本篇内容主要讲解“如何使用Node.js中的回调函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Node.js中的回调函数”吧!趣讲Node.js的回...
    99+
    2024-04-02
  • 怎么使用Async函数
    本篇内容介绍了“怎么使用Async函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Async 函数是一个...
    99+
    2024-04-02
  • JavaScript中的async函数怎么使用
    本篇内容主要讲解“JavaScript中的async函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中的async函数怎么使用”吧!async函数async函数的返...
    99+
    2023-07-04
  • ES7中Async/await如何使用
    这篇文章给大家介绍ES7中Async/await如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。...
    99+
    2024-04-02
  • vue中async-await如何使用
    本篇文章为大家展示了vue中async-await如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。曾经见过为了让钩子函数的异步代码可以同步执行,而对钩子函数使...
    99+
    2024-04-02
  • es6中Async函数有什么用
    这篇文章将为大家详细讲解有关es6中Async函数有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。async 函数async 函数,使得异步操作变得更加方便。它是 ...
    99+
    2024-04-02
  • JS中如何使用async与await
    小编给大家分享一下JS中如何使用async与await,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、asyncasync创建一个异步函数来定义一个代码块,在其...
    99+
    2023-06-22
  • SpringBoot如何使用@Async
    这篇文章主要为大家展示了“SpringBoot如何使用@Async”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot如何使用@Async”这篇文章吧。SpringBoot使用@A...
    99+
    2023-06-22
  • 如何使用Node.js的Async Hooks模块追踪异步资源
    小编给大家分享一下如何使用Node.js的Async Hooks模块追踪异步资源,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Async Hooks 功能是 Node.js v8.x 版本...
    99+
    2024-04-02
  • 聊聊Node中怎么用async函数
    借助于新版 V8 引擎,Node 从 7.6 开始支持 async 函数特性。今年 10 月 31 日,Node.js 8 也开始成为新的长期支持版本,因此你完全可以放心大胆地在你的代码中使用 async 函数了。在这边文章里,我会简要地介...
    99+
    2023-05-14
    async node
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作