Soy tan nuevo en node.js que estoy tratando de crear un valor de intervalo en node.js y puedo invocar una función cuando llego a la URL exacta, sin embargo, no sé cómo pasar el valor de console.log a Valor JSON.
este es mi código:
// Import packages const express = require("express"); // App const app = express(); const port = 8000; app.get("/", (req, res) => { function doSomething() { console.log(Math.round(Math.random() * (3000 - 500)) + 500); } const loop = () => { setTimeout(() => { doSomething(); loop(); }, 1000); }; loop(); res.json({ random: doSomething() }); }); // Starting server app.listen(port, () => console.log(`listening on port ${port}!`)); Me gustaría pasar el número aleatorio en la doSomething function to res.json` dentro.
Entonces, esto es lo que probé:
// Import packages const express = require("express"); // App const app = express(); const port = 8000; let number; app.get("/", (req, res) => { function doSomething() { number = Math.round(Math.random() * (3000 - 500)) + 500; return number; } const loop = () => { setTimeout(() => { doSomething(); loop(); }, 1000); }; loop(); res.json({ random: doSomething() }); }); // Starting server app.listen(port, () => console.log(`listening on port ${port}!`));Gracias de antemano
Creo que sería mejor invocar su función desde el cliente y usar setInterval en lugar de setTimeout de lo contrario, solo se ejecutará una vez.
Mantenga su código de servidor así:
// Import packages const express = require("express"); // App const app = express(); const port = 8000; let number; app.get("/", (req, res) => { function doSomething() { number = Math.round(Math.random() * (3000 - 500)) + 500; return number; } res.json({ random: doSomething() }); }); // Starting server app.listen(port, () => console.log(`listening on port ${port}!`));Luego, en un js cargado desde el cliente (navegador), podría hacer algo como esto:
setInterval(() => { fetch("http://localhost:8000/") .then(res => res.json()) .then(res => console.log(res)) .catch(err => console.log("err", err)) }, 1000) Dicho esto, usar setInterval puede no ser lo mejor. Le recomendaría crear un HTML <button> o <a> y configurar un detector de eventos para manejar el evento de clic. Luego, cuando el usuario hace clic en el botón, puede invocar una función para ejecutar la operación de búsqueda.