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

245
Vistas
HTTP obtener información EN ORDEN y agregar a la matriz en el orden especificado

Lo he probado todo. Quiero obtener de mi servidor algunos datos en un bucle y agregar las respuestas en una matriz en el orden en que ejecuto el bucle for.

Estoy pensando que la respuesta es recursiva, pero lo intenté varias veces y fallé.

Estoy usando AXIOS:

 let currentPhraseWordAssign = []; function addPartOfSpeechAndWordPhrasesToFullScript () { assignPartOfSpeechAndAddToPhraseArray(["phrase", "run"]).then(() => {console.log(currentPhraseWordAssign)}); } async function assignPartOfSpeechAndAddToPhraseArray (phrase) { if(currentPhraseWordAssign.length >= phrase.length) { console.log(currentPhraseWordAssign); currentPhraseWordAssign = []; return; } let word = phrase[currentPhraseWordAssign.length]; axios({ method: 'get', url: `http://localhost:9200/english_minus_verbs/_search`, headers: { 'Content-Type': 'application/json' }, data: { _source: ["part_of_speech"], query: { term: { word: word, } } } }).then((r) => { try { currentPhraseWordAssign.push({word: word, partOfSpeech: r.data.hits.hits[0]._source.part_of_speech}); }catch (e) { currentPhraseWordAssign.push({word: word, partOfSpeech: 'verb'}); } }).then(()=>{ assignPartOfSpeechAndAddToPhraseArray(phrase); }); }

Tal vez ese código esté completamente equivocado, de todos modos es como la séptima vez que lo escribo... Probé con promesas, async/await, sync y ahora recursividad...

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede ejecutar las llamadas axios en secuencia (una tras otra) de esta manera:

 async function lookupWords(arrayOfWords) { let currentPhraseWordAssign = []; for (let word of arrayOfWords) { const data = await axios({ method: 'get', url: `http://localhost:9200/english_minus_verbs/_search`, headers: { 'Content-Type': 'application/json' }, data: { _source: ["part_of_speech"], query: { term: { word: word, } } } }); currentPhraseWordAssign.push({word: word, partOfSpeech: r.data.hits.hits[0]._source.part_of_speech}); } return currentPhraseWordAssign; }

O bien, puede ejecutarlos en paralelo y recopilar los resultados en orden:

 function lookupWords(arrayOfWords) { return Promise.all(arrayOfWords.map(word => { return axios({ method: 'get', url: `http://localhost:9200/english_minus_verbs/_search`, headers: { 'Content-Type': 'application/json' }, data: { _source: ["part_of_speech"], query: { term: { word: word, } } } }).then(r => { return {word: word, partOfSpeech: r.data.hits.hits[0]._source.part_of_speech}; }); })); }

Si los ejecuta en paralelo (lo que puede terminar antes), debe asegurarse de que el servidor de destino aceptará tantas solicitudes simultáneas como su matriz sea larga. Algunos servidores limitarán o rechazarán demasiadas solicitudes simultáneas. Para ejecutar semi-en-paralelo donde tiene N solicitudes en curso al mismo tiempo (cómo procesaría una gran matriz en paralelo sin demasiadas solicitudes en curso a la vez), usaría algo como mapConcurrent() para controlar la ejecución .

about 4 years ago · Juan Pablo Isaza 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