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

133
Visualizações
Secuencial al mapear una matriz con promesa en javascript

Tuve que preguntar ya que no puedo encontrar una manera decente de resolverlo. He seguido el tutorial de Cómo resolver las promesas de JavaScript secuencialmente (una por una) pero aún no puede funcionar en mi situación después de modificarla.

Llamé a una consulta SQLite para obtener datos y obtener una matriz de datos como respuesta. Luego llamo a la función a para comenzar a esperar todo el otro proceso hasta que se complete este subproceso.

Ejemplo de respuesta: [{"TSTaskID": 1638938895}, {"TSTaskID": 1638945283}]

 async function getUnsyncRecordFromLocal() { /// ... and the rest of the code send query to SQLite callTasks(resp); } const callTasks = async (response) => { const allPromise = Promise.all(response.map(async (_item) => { task1(_item) .then((resp1) => task2(resp1)) .then((resp2) => task3(resp2)) .catch(console.error); })) const lists = await allPromise; } const task1 = async (TSTaskID) => { return new Promise((resolve, reject) => { console.log('task1 done.', TSTaskID); resolve(TSTaskID) }) /** implementation */ }; const task2 = async (TSTaskID) => { return new Promise((resolve, reject) => { console.log('task2 done.', TSTaskID); resolve(TSTaskID) }) /** implementation */ }; const task3 = async (TSTaskID) => { return new Promise((resolve, reject) => { console.log('task3 done.', TSTaskID); resolve(TSTaskID); }) /** implementation */ };

El registro al hacerlo de esta manera

 LOG task1 done. 1638938895 LOG task1 done. 1638945283 LOG task2 done. 1638938895 LOG task2 done. 1638945283 LOG task3 done. 1638938895 LOG task3 done. 1638945283

como quiero que se vea

 LOG task1 done. 1638938895 LOG task2 done. 1638938895 LOG task3 done. 1638938895 LOG task1 done. 1638945283 LOG task2 done. 1638945283 LOG task3 done. 1638945283

Lo intenté de varias maneras usando la async function pero la tarea aún no se completó en secuencia. Me gusta la tarea 1, 2, 3 para el mismo número y la siguiente tarea con el mismo número. Porque necesito verificar con la base de datos del servidor y actualizar la tabla SQLite local. Por lo tanto, debe esperar a que finalice uno antes de continuar con el siguiente.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Ambas Promesas iniciales de la tarea 1 se activarán al realizar el mapeo. Debe esperar a que se complete el primero antes de comenzar el segundo. p.ej

 const callTasks = async (response) => { const result = [] for(let i = 0; i < response.length; i++){ const current = response[i] try { const result1 = await task1() const result2 = await task2(result1) const result3 = await task3(result2) result.push(result3) } catch(e) { // catch here } } return result }
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