Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

383
Vistas
SyntaxError: palabra reservada inesperada "esperar", node.js es la versión correcta

Estoy tratando de ejecutar una función de forma asíncrona 20 veces. Tengo la definición de la función:

 import axios from 'axios'; async function updateUser (url, user) { return new Promise((resolve, reject) => { axios.put(url, JSON.stringify(user)) .then(response => { //Folio returned code 204 console.log('The user has been updated'); resolve(response.data); }).catch((err) => { //Folio returned error console.error(`Error Text: ${err.response.data}`); console.error(`Error Code: ${err}`); }); }); }; export {updateUser};

Luego, intento recorrer a los usuarios en un JSON externo y actualizarlos en mi sistema 20 a la vez:

 import {updateUser} from './updateUser.js'; import usersjson from './jsons/users.json'; let promises=[]; if (usersjson.users.length) { try { for (const user of usersjson.users) { update = new promise ((resolve,reject) => { updateUser(url, user) .then((list) => {resolve(list)}) .catch((error)=>{reject(error)}) }); promises.push(update); if (promises.length = 20) { await Promise.all(promises) .then((responses)=> { console.log(responses); promises=[]; }).catch((err)=> { console.log(err); }); } } } catch(err)=> { console.log(err); } }

Sin embargo, recibo un mensaje de error en la consola:

 await Promise.all(promises) ^^^^^ SyntaxError: Unexpected reserved word

La versión de mi nodo es 12.19.0 (según las preguntas anteriores, parece que tiene que ser al menos 10, por lo que ese no debería ser el problema).

Cuando ejecuto la función sin esperar, funcionan correctamente (es decir, los usuarios se actualizan en mi sistema). También parece que el ciclo for es asíncrono por sí mismo, pero me temo que si hay demasiadas llamadas simultáneamente, mi sistema bloqueará la API, así que quiero hacer de 20 a 50 llamadas a la vez, como máximo.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para usar await , debe declarar la función en la que está poniendo await como asíncrono

Por ejemplo:

 const functionReturningPromise = (input) => { return new Promise((resolve, reject) => { if (!input) { return reject(); } return resolve(); }); } const functionAwaitingPromise = async () => { for (let i = 0; i < 20; i +=1) { try { await functionReturningPromise(i); console.log(i); } catch (error) { console.log(error); } } }

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda