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

225
Visualizações
Transacciones de Firestore: ¿es necesario esperar todas las acciones de transacción?

He leído este código en la documentación de Firestore:

 const cityRef = db.collection('cities').doc('SF'); try { const res = await db.runTransaction(async t => { const doc = await t.get(cityRef); const newPopulation = doc.data().population + 1; if (newPopulation <= 1000000) { await t.update(cityRef, { population: newPopulation }); return `Population increased to ${newPopulation}`; } else { throw 'Sorry! Population is too big.'; } }); console.log('Transaction success', res); } catch (e) { console.log('Transaction failure:', e); }

pero no puedo entender el propósito de esperar el t.update() de la octava línea.

¿No funcionaría el código de la misma manera sin esperar esa octava línea?

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

0

No puedo entender el propósito de esperar el t.update() de la octava línea. ¿No funcionaría el código de la misma manera sin esperar esa octava línea?

Tienes toda la razón: el método update() (así como los de set() y delete() ) no es asíncrono y no devuelve una Promesa, sino la Transaction .

about 4 years ago · Juan Pablo Isaza Relatório

0

Cuando llama a la función async js, obtiene un objeto Promise devuelto, que puede informarle sobre PromiseState (si la función finalizó, es tiempo de ejecución) y PromiseResult (valor devuelto de la función).
El hecho de que el objeto Promise haya regresado no le dice que la función terminó su misión.
La palabra clave 'await' hace que su código se detenga hasta que la función asíncrona termine de ejecutarse (similar al método std::thread::join ).
El uso de 'aguardar' con un objeto Promise puede indicarle con certeza que su Promise se ha resuelto, por lo que (si el código no generó una excepción) las líneas posteriores pueden ejecutarse de manera segura, sabiendo que la función asíncrona se ejecutó correctamente.
El uso de await en la promesa t.update es necesario y debe mantenerlo allí, de lo contrario, puede devolver una cadena de éxito para un código que aún se está ejecutando y podría fallar.

Tenga en cuenta que la palabra clave await verifica Promise.PromiseState terminado y evalúa el valor Promise.PromiseResult (indefinido para funciones que no regresan)

Lea también:
JavaScript asíncrono en W3Schools
Función asíncrona en MDN

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