Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

76
Visualizações
La API de BestBuy no consultará en un bucle

Soy muy nuevo en Javascript y estoy tratando de utilizar la API de BestBuy para obtener datos en un número de SKU específico cada 3 segundos.

La llamada a la API funciona como se esperaba por sí sola, pero cuando muevo la llamada dentro de un ciclo while, no obtengo nada y no se activa la función console.log en la función.

No estoy seguro de adónde ir desde aquí y estoy empezando a preguntarme si esta llamada API solo se puede llamar por sí misma.

Agradecería cualquier ayuda.

 var bby = require('bestbuy')('<Actual BestBuy Api key in original code>'); var isSoldOut = true; while(isSoldOut) { console.log("HERE"); bby.products(6465789,{show:'sku,name,salePrice,onlineAvailability,inStorePickup,onlineAvailabilityUpdateDate'}).then(function(data){ console.log(data); if (data['onlineAvailability'] == false) { isSoldOut = false; console.log(isSoldOut); } }); wait(3000); } function wait(ms) { var d = new Date(); var d2 = null; do { d2 = new Date(); } while(d2-d < ms); }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Sus bucles while bloquean constantemente el hilo, por lo que su función de devolución de llamada no se puede ejecutar.

En lugar de los bucles while, puede usar un intervalo:

 var bby = require('bestbuy')('<Actual BestBuy Api key in original code>'); function check() { console.log("HERE"); bby.products(6465789,{show:'sku,name,salePrice,onlineAvailability,inStorePickup,onlineAvailabilityUpdateDate'}).then(function(data){ console.log(data); if (data['onlineAvailability'] == false) { clearInterval(loop); console.log("In Stock"); } }); } const loop = setInterval(check, 3000);

Incluso el limpiador puede estar usando async/await para esperar 3 segundos después de recibir cada respuesta:

 var bby = require('bestbuy')('<Actual BestBuy Api key in original code>'); const wait = require('util').promisify(setTimeout); async function check() { console.log("HERE"); const data = await bby.products(6465789,{show:'sku,name,salePrice,onlineAvailability,inStorePickup,onlineAvailabilityUpdateDate'}); console.log(data); if (data['onlineAvailability'] == false) { console.log("In Stock"); return; } await wait(3000); } check();
about 4 years ago · Juan Pablo Isaza Relatório

0

Hay varios puntos para mejorar su código:

  • Use setInterval para ejecutar código en intervalos regulares, en lugar de usar el bloqueo de giro en un ciclo while
  • Use async/await para mejorar la legibilidad
  • En lugar de marcar condition == false , simplemente marque !condition
  • En lugar de hacer if(!condition){x = false} , simplemente haz x = !condition
  • Utilice la notación de puntos en lugar de la notación de corchetes para acceder a la propiedad del objeto si el nombre de la propiedad no es variable. Esto puede aprovechar la inteligencia de IDE si la forma del objeto está debidamente documentada y reducir los errores tipográficos.

 const t = setInterval(async () =>{ const data = await bby.products(6465789, { show: 'sku,name,salePrice,onlineAvailability,inStorePickup,onlineAvailabilityUpdateDate' }); console.log(data); isSoldOut = !data.onlineAvailability; console.log(isSoldOut); if(isSoldOut) { clearInterval(t); } },3000);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda