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

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

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 Report

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