簡體   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