广告
返回顶部
首页 > 资讯 > 前端开发 > html >如何解决nodejs中的异步操作问题
  • 586
分享到

如何解决nodejs中的异步操作问题

2024-04-02 19:04:59 586人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关如何解决nodejs中的异步操作问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。基本概念:async 表示这是一个async函数,await只能用在这

这篇文章给大家分享的是有关如何解决nodejs中的异步操作问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

基本概念:

async 表示这是一个async函数,await只能用在这个函数里面。

await 表示在这里等待promise返回结果了,再继续执行。

await 后面跟着的应该是一个promise对象(当然,其他返回值也没关系,不过那样就没有意义了…)

举例:

获取返回值:

var sleep = function (time) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      // 返回 ‘ok'
      resolve('ok');
    }, time);
  })
};
var start = async function () {
  let result = await sleep(3000);
  console.log(result); // 收到 ‘ok'
};

捕捉错误:

var sleep = function (time) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      // 模拟出错了,返回 ‘error'
      reject('error');
    }, time);
  })
};
var start = async function () {
  try {
    console.log('start');
    await sleep(3000); // 这里得到了一个返回错误
    
    // 所以以下代码不会被执行了
    console.log('end');
  } catch (err) {
    console.log(err); // 这里捕捉到错误 `error`
  }
};

 在循环中:

var start = async function () {
  for (var i = 1; i <= 10; i++) {
    console.log(`当前是第${i}次等待..`);
    await sleep(1000);
  }
};

再循环中使用不需要闭包,每次循环会被阻塞。

最前面提到的场景:(综合使用)

var showArticle = async function () {
    await new Promise(function (resolve, reject) {
      PostModel.incPv(postId, function (result) {
        resolve(result);
      });
    });// pv 加 1
    var post = await new Promise(function (resolve, reject) {
      PostModel.getPostById(postId, function (article) {
        resolve(article);
      });
    });// 获取文章信息
    await new Promise(function (resolve, reject) {
      userModel.getUserById(post.author,function (author) {
        post.author=author;
        resolve();
      })
    });//获取文章作者
    var comments = await new Promise(function (resolve, reject) {
      CommentModel.getComments(post._id, function (comment) {
        resolve(comment);
      });
    });// 获取该文章所有留言
    for(var i=0;i<comments.length;i++){
      await new Promise(function (resolve, reject) {
        userModel.getUserById(comments[i].author,function (author) {
          comments[i].author=author;
          resolve();
        })
      });//获取文章留言作者
    }
    if (!post) {
      req.session.error = '该文章不存在';
      return res.redirect('/post');
    }
    res.render('post',{post: post, comments: comments});
  };
  showArticle();

感谢各位的阅读!关于“如何解决nodejs中的异步操作问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 如何解决nodejs中的异步操作问题

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解决nodejs中的异步操作问题
    这篇文章给大家分享的是有关如何解决nodejs中的异步操作问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。基本概念:async 表示这是一个async函数,await只能用在这...
    99+
    2022-10-19
  • async/await与promise(nodejs中的异步操作问题)
    举例写文章详情页面的时候的一个场景:首先更改文章详情中的 PV,然后读取文章详情,然后根据文章详情中文章 Id 查阅该文章评论和该文章作者信息。获取全部数据之后渲染文章详情页。数据库操作都是异步的,最直接想...
    99+
    2022-06-04
    操作 await async
  • nodejs中解决异步嵌套循环和循环嵌套异步的问题
    众所周知,nodejs异步和循环对于初学者来说是一个很大的问题,今天我们就一起来了解和解决它 当异步和循环同时出现的时候这个问题就会被放大很多倍. 庆幸的是,大神们研究出了async这个第三方模块,解决...
    99+
    2022-06-04
    嵌套 nodejs
  • react异步渲染问题如何解决
    在React中,异步渲染通常可以通过以下方式解决:1. 使用React.lazy和Suspense:React.lazy函数允许您在...
    99+
    2023-09-04
    react
  • es7之fetch如何解决异步嵌套问题
    这篇文章主要介绍了es7之fetch如何解决异步嵌套问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们之前学习了async和await,...
    99+
    2022-10-19
  • 如何解决Angularjs异步操作后台请求用$q.all排列先后顺序的问题
    这篇文章主要介绍了如何解决Angularjs异步操作后台请求用$q.all排列先后顺序的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最...
    99+
    2022-10-19
  • 解决vue中reader.onload读取文件的异步问题
    目录reader.onload读取文件的异步问题问题解决reader.onloadend异步返回结果问题reader.onload读取文件的异步问题 问题 用element上传文件组...
    99+
    2022-11-13
  • 解决react中useState状态异步更新的问题
    目录疑惑状态异步更新带来的问题问题示例问题解决类组件的解决方案函数组件的解决方案其他解决方案结尾疑惑 相信刚开始使用react函数组件的小伙伴也遇到过一个坑,就是 useState ...
    99+
    2022-11-13
  • 如何解决vue跨域axios异步通信问题
    小编给大家分享一下如何解决vue跨域axios异步通信问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在项目中,常常需要从后端获取数据内容。特别是在前后端分离的时候,前端进行了工程化部署...
    99+
    2022-10-19
  • Javascript操作img如何解决网站提交数据异常问题
    这篇文章将为大家详细讲解有关Javascript操作img如何解决网站提交数据异常问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用Javascript巧妙操作img...
    99+
    2022-10-19
  • 使用nodeAPI时遇到过异步问题如何解决
    这篇文章主要讲解了“使用nodeAPI时遇到过异步问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用nodeAPI时遇到过异步问题如何解决”吧!问题闲逛技术群时常常看到群友遇到异...
    99+
    2023-07-05
  • 如何解决UnsupportedOperationException异常问题
    目录UnsupportedOperationException异常下面开始正式讲解了综上所论UnsupportedOperationException——操作...
    99+
    2023-05-20
    UnsupportedOperationException异常 UnsupportedOperationException 解决UnsupportedOperationException异常
  • Vue的异步渲染axios问题怎么解决
    本文小编为大家详细介绍“Vue的异步渲染axios问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue的异步渲染axios问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Vue异步渲染ax...
    99+
    2023-07-05
  • 如何解决操作系统运行慢的问题
    这篇文章给大家分享的是有关如何解决操作系统运行慢的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。操作系统运行慢可能是由于硬件或软件原因导致。软件原因:解决方法: 如果电脑安装多个杀毒软件,请您仅保留一个测试,...
    99+
    2023-06-14
  • 异步编程中遇到的Python问题及解决方法
    异步编程中遇到的Python问题及解决方法在现代的编程中,异步编程变得越来越重要。它可以提高程序的性能和响应能力,但也会出现一些常见的问题。本文将介绍异步编程中遇到的一些常见问题,并提供相应的解决方法。同时,我们将使用Python语言进行示...
    99+
    2023-10-22
    异步编程问题:回调地狱 解决方法:使用async/await和协程 使代码更加简洁和可读。 异步编程问题:并发控制
  • 异步编程中遇到的Python问题及解决策略
    异步编程是一种利用非阻塞的方式处理多个任务的编程方法。它能够提高程序的性能和响应速度,特别适用于网络请求、IO操作等耗时任务。在Python中,通过使用异步库如asyncio和aiohttp,可以实现高效的异步编程。然而,在实际应用中,我们...
    99+
    2023-10-22
    异步编程:异步 Python问题:Bug 解决策略:优化
  • 异步log4j2中的location信息打印问题怎么解决
    异步log4j2中的location信息打印问题怎么解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。异步log4j2的location信息打印问题背景:项目改...
    99+
    2023-06-22
  • 怎么解决异步任务所导致的问题
    这篇文章主要介绍“怎么解决异步任务所导致的问题”,在日常操作中,相信很多人在怎么解决异步任务所导致的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决异步任务所导致的...
    99+
    2022-10-19
  • 如何解决java.lang.OutOfMemoryError: Metaspace异常问题
    小编给大家分享一下如何解决java.lang.OutOfMemoryError: Metaspace异常问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!介绍 M...
    99+
    2023-06-14
  • 如何解决VPS服务器操作时卡的问题
    解决VPS服务器操作时卡的方法:1、通过远程桌面链接程序登录VPS服务器;2、打开VPS服务器系统属性管理窗口,为VPS服务器设置最佳性能和虚拟内存,提高VPS服务器速度;3、打开VPS服务器磁盘管理,对未分配的磁盘进行分配,将数据存放在除...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作