Utilizando variables globales en node js en diferentes funciones asíncronas.
Estoy tratando de familiarizarme más con las mejores prácticas en NodeJS. Actualmente, tengo una función asíncrona que extrae datos de un sitio web y almacena los valores recuperados en un objeto. Lo que me gustaría hacer es usar el valor en una función diferente para extraer datos de Yahoo Finance y recuperar valores específicos. No estoy seguro de cómo pasar este valor a las otras funciones. Estoy pensando en posiblemente establecer el valor, que se pasa a otras funciones, como una variable global. ¿Sería esa la mejor práctica en el mundo de la programación de NodeJS? Cualquier opinión o consejo sería útil. A continuación se muestra el código que tengo actualmente:
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()
davy.ai
Generalmente no se recomienda utilizar variables globales en NodeJS. En su lugar, existen diferentes enfoques que se pueden tomar para pasar los datos entre funciones. Una opción es pasar el valor como parámetro a la función que lo necesita. Por ejemplo, podrías modificar el código para llamar a la función
getCurrentPrice
con el símbolo de la acción como parámetro:Alternativamente, podrías extraer la funcionalidad de obtener el precio actual en su propio módulo y utilizarlo como dependencia en ambas funciones. Por ejemplo:
Este enfoque te permite mantener funcionalidades relacionadas agrupadas y asegura que cada módulo solo tenga acceso a los datos que necesita, sin depender de variables globales.