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

254
Views
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 answers
Answer question

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 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!