在不同的异步函数中使用nodejs中的全局变量



我正在努力熟悉NodeJS中的最佳实践。目前,我有一个异步函数,它从网站上抓取一些数据,并将检索到的值存储在对象中。我想做的是,使用不同函数中的值从雅虎金融提取数据,以检索特定的值。我不确定如何将此值传递给其他函数。我正在考虑可能将传递给其他函数的值设置为全局变量。这会是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:我想说你可以把抓取网站的结果存储在会话数据中。或者在响应中传递它并调用next((。或者在调用雅虎路由之前创建一些中间件来抓取网站。

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

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;
}

最新更新