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