[英]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.