如何在节点js中使用异步获取和等待数据

编程入门 行业动态 更新时间:2024-10-08 22:47:24

如何在<a href=https://www.elefans.com/category/jswz/34/1771452.html style=节点js中使用异步获取和等待数据"/>

如何在节点js中使用异步获取和等待数据

我有两个产品和类别的集合,并且两个集合都具有数据产品(152),类别(10)。因此,我尝试连接数据库以检索数据。首先,我使用async-await功能调用产品收集数据,然后调用产品类别收集数据。但是它获得了第一类数据和下一个产品数据。如何解决这个问题,任何人都可以给出答案。

product.js

async function product_data(collection) {
   let mongodb = await MongoDB.connect(collection)
   let result = await mongodb.findAll()
   return result
}

module.exports.product_data = product_data

category.js

async function category_data(collection) {
   let mongodb = await MongoDB.connect(collection)
   let result = await mongodb.findAll()
   return result
}
module.exports.category_data = category_data

app.js

const {product_data} = require("./product")
const {category_data} = require("./category")   

async function updatedb() {
    let product_data = await product_data("ecomm_product")
    console.log(product_data)
    let category_data = await category_data("ecomm_category")
    console.log(category_data)  
}

我有结果

[打印产品数据后的第一个打印类别数据

预期结果

其在打印类别数据之后的第一个打印产品数据

回答如下:

我根本无法重现这一点,即使在明显延迟的情况下,产品比类别花费的时间更长。将您的代码折叠到一个文件中,并使用正确的JS约定进行命名和大小写:

function getProductData(collection) {
  return new Promise(resolve => {
      setTimeout(() => resolve('product'), 2000);
  });
}

function getCategoryData(collection) {
  return new Promise(resolve => {
      setTimeout(() => resolve('category'), 1000);
  });
}

async function updatedb() {
    let product_data = await getProductData("ecomm_product")
    console.log(product_data)
    let category_data = await getCategoryData("ecomm_category")
    console.log(category_data)
}

updatedb();

每次都简单地产生以下输出:

$node test.js
product
category

更多推荐

如何在节点js中使用异步获取和等待数据

本文发布于:2024-05-07 20:45:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757171.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:节点   数据   如何在   js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!