繁体   English   中英

在不同的异步函数中使用节点 js 中的全局变量

[英]Using global variables in node js in different async functions

我正在尝试更熟悉 NodeJS 中的最佳实践。 目前,我有一个异步 function 从网站上抓取一些数据并将检索到的值存储在 object 中。 我想做的是使用不同 function 中的值从雅虎财经中提取数据以检索特定值。 我不确定如何将此值传递给其他函数。 我正在考虑可能将传递给其他函数的值设置为全局变量。 这会是 NodeJS 编程世界中的最佳实践吗? 任何意见或建议都会有所帮助。 以下是我目前拥有的代码:

const cheerio = require('cheerio');
const axios = require("axios");
 
async function read_fortune_500() {
  try {
    const { data } = await axios({ method: "GET", url: "https://en.wikipedia.org/wiki/List_of_S%26P_500_companies", })
    const $ = cheerio.load(data)
    const elemSelector = '#constituents > tbody > tr > td:nth-child(1)'
    const keys = ['symbol']

    $(elemSelector).each((parentIndex, parentElem) => {
      let keyIndex = 0
      const stockObject = {}
      if (parentIndex <= 9){
      $(parentElem).children().each((childIndex, childElem) => {
        const tdValue = $(childElem).text()

        if (tdValue) {
          stockObject[keys[keyIndex]] = tdValue
        }
      })
      console.log(stockObject)
    }
    })
} catch (err) {
    console.error(err)
  }
}

async function getCurrentPrice() {}

read_fortune_500()

听起来更像是 JavaScript 问题,然后是 NodeJS 特定问题。

NodeJS:我会说你可以将抓取网站的结果存储在 session 数据中。 或者在响应中传递它并调用 next()。 或者在调用 Yahoo 路由之前创建一些中间件来抓取网站。

Javascript:您可以调用异步 function 来抓取您站点上的数据并等待响应。 完成后,您可以调用下一个 function 传递从异步结果中检索到的数据。 请参阅下面的基本示例。

 async function scrapeWebsite(){ let webScrapeReults; // logic to scrape site return webScrapeReults; } function getYahooMarket(){ let results; let webData = await scrapeWebsite(); // use webData to get reults for yahooMarket return results; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM