Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

237
Views
Estoy tratando de usar el valor de retorno que obtengo en esta función .then(). no se como arreglarlo

Estoy tratando de usar el valor de retorno que obtengo en esta función .then() en mi función de bot de discordia para enviar un mensaje de cualquier precio de las acciones que ingresen. Cuando ejecuto la función en la función discord, dice 'indefinido' pero el precio correcto se registra en la función .then(). ¡Por favor ayuda!

 const alpha = require("alphavantage")({ key: "KEY" }); const { Client, Intents } = require("discord.js"); const Discord = require("discord.js"); const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES], }); const tickers = ["CVE", "SU", "AAPL", "TSLA", "CNQ", "FUBO", "FB"]; const prefix = "."; client.once("ready", () => { console.log("Bot is Ready!"); }); getInput(); function getInput() { client.on("message", (msg) => { if (!msg.content.startsWith(prefix) || msg.author.bot) return; const args = msg.content.slice(prefix.length).trim().split(" "); const command = args.shift().toLowerCase(); if (command === "list") { msg.channel.send(tickers.join(", ")); } else if (command == "add") { tickers.push(args[0]); } else if (command == "price") { console.log(getStockPrices(args[0])); } }); client.login("KEY"); } function getStockPrices(stock) { let prices = []; alpha .experimental("TIME_SERIES_INTRADAY", { symbol: stock, market: "USD", interval: "5min", }) .then((data) => { for (let key in data["Time Series (5min)"]) { let openPrice = data["Time Series (5min)"][key]["1. open"]; prices.push(openPrice); } console.log(prices[0]); return prices[0]; }); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Debe esperar su promesa, o definir then devolución de llamada:

 async function getInput() {//async client.on("message", (msg) => { if (!msg.content.startsWith(prefix) || msg.author.bot) return; const args = msg.content.slice(prefix.length).trim().split(" "); const command = args.shift().toLowerCase(); if (command === "list") { msg.channel.send(tickers.join(", ")); } else if (command == "add") { tickers.push(args[0]); } else if (command == "price") { console.log(await getStockPrices(args[0]));//await } }); client.login("KEY"); }

O

 function getInput() { client.on("message", (msg) => { if (!msg.content.startsWith(prefix) || msg.author.bot) return; const args = msg.content.slice(prefix.length).trim().split(" "); const command = args.shift().toLowerCase(); if (command === "list") { msg.channel.send(tickers.join(", ")); } else if (command == "add") { tickers.push(args[0]); } else if (command == "price") { getStockPrices(args[0]).then(console.log); //then } }); client.login("KEY"); }

Con promesas, el resultado es asíncrono. Y debe, de hecho, devolver su promesa en su otra función:

 function getStockPrices(stock) { let prices = []; return alpha //there, return your promise .experimental("TIME_SERIES_INTRADAY", { symbol: stock, market: "USD", interval: "5min", }) .then((data) => { for (let key in data["Time Series (5min)"]) { let openPrice = data["Time Series (5min)"][key]["1. open"]; prices.push(openPrice); } console.log(prices[0]); return prices[0]; }); }

Deberías leer sobre Javascript Promises, te ayudará a entender lo que estás haciendo.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!