La documentación de Firebase afirma:
Una función que llama a una transacción (función de transacción) puede ejecutarse más de una vez si una edición simultánea afecta a un documento que lee la transacción.
No está claro exactamente qué función se ejecutará dos veces cuando haya una edición simultánea. En el siguiente ejemplo, la runTranscation outerFunc por lo que una interpretación literal de la documentación implicaría que esa outerFunc puede llamarse dos veces.
Sin embargo, esto parece una implementación extraña, y sospecho que los documentos quieren decir que se puede llamar a innerFunc más de una vez cuando hay una edición simultánea.
import { runTransaction } from "firebase/firestore"; function outerFunc () { console.log('outerFunction'); try { await runTransaction(db, async function innerFunc(transaction) { const sfDoc = await transaction.get(sfDocRef); if (!sfDoc.exists()) { throw "Document does not exist!"; } const newPopulation = sfDoc.data().population + 1; transaction.update(sfDocRef, { population: newPopulation }); }); console.log("Transaction successfully committed!"); } catch (e) { console.log("Transaction failed: ", e); } } ¿Se podría llamar a outerFunc dos veces cuando hay una edición simultánea como implica el documento?
No hay forma de que el SDK de Firestore pueda invocar su outerFunc (y mucho menos varias veces), pero la innerFunc llamada de su función interna puede ser llamada varias veces por el SDK de Firestore.
Si encuentra que la documentación es confusa, envíe sus comentarios en la página misma. Debería haber un enlace para eso en la parte inferior derecha.