Estoy tratando de obtener un archivo javascript y devolver el objeto de respuesta como una matriz. Mi archivo javascript es simplemente una matriz como ["1", "2", "3", ...] Aquí está mi código ahora mismo:
function getNames() { let data = fetch('/path/to/file') .then((response) => response.json()) .then(data => { console.log(data); return data() }) .catch(error => { return error; }); }Necesito encontrar una manera de usar la variable de datos fuera de la función. ¿Cómo puedo hacer esto?
Está usando node.js, por lo que puede usar require() si usa module.exports
./someFile.js
module.exports = { foo: "bar" } ./otherFile.js
const data = require("./someFile.js") console.log(data.foo) // "bar" Si está solicitando obtener una matriz u objeto simple de un archivo, debe usar archivos .json y usar require() como en el primer ejemplo. Si desea obtener los datos actuales, en lugar de los datos que obtiene cuando los necesita por primera vez, use el módulo fs
./array.json
[ "1", "2", "3" ] ./otherFile.js
const fs = require("fs") const data = JSON.parse( fs.readFileSync("./array.json", "utf8") ) console.log(data) // [ "1", "2", "3" ] let data = []; ( function() { fetch('https://jsonplaceholder.typicode.com/users') .then(response => response.json()) .then(json => { data = [...json] }) } )(); // this is outside - might be empty, if the response does // not arrive under 3 seconds setTimeout(() => { console.log("data in setTimeout", data) }, 3000)Si desea actualizar el estado de su aplicación de forma reactiva (según si el área ha llegado o no), debe usar una biblioteca/marco reactivo como React, Vue, Angular o Svelte. (Por supuesto, puede crear su propio sistema de reactividad, pero eso podría limitarlo más adelante).