Este es el código que usa Firebase en sus documentos como referencia para cargar archivos en Firebase Cloud Storage.
import { getStorage, ref, uploadBytesResumable, getDownloadURL } from "firebase/storage"; const storage = getStorage(); const storageRef = ref(storage, 'images/rivers.jpg'); const uploadTask = uploadBytesResumable(storageRef, file); // Register three observers: // 1. 'state_changed' observer, called any time the state changes // 2. Error observer, called on failure // 3. Completion observer, called on successful completion uploadTask.on('state_changed', (snapshot) => { // Observe state change events such as progress, pause, and resume // Get task progress, including the number of bytes uploaded and the total number of bytes to be uploaded const progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100; console.log('Upload is ' + progress + '% done'); switch (snapshot.state) { case 'paused': console.log('Upload is paused'); break; case 'running': console.log('Upload is running'); break; } }, (error) => { // Handle unsuccessful uploads }, () => { // Handle successful uploads on complete // For instance, get the download URL: https://firebasestorage.googleapis.com/... getDownloadURL(uploadTask.snapshot.ref).then((downloadURL) => { console.log('File available at', downloadURL); }); } );TLTR: ¿Cuál es la forma estándar de ejecutar código que solo necesita ejecutarse sin conexión (por ejemplo, cargar el archivo en el almacenamiento local hasta que se pueda establecer una conexión) en el método uploadTask.on()?
Asumí que cuando estaba fuera de línea, después de que se disparara el primer caso 'en ejecución', la próxima actualización 'state_changed' sería sobre que no había conexión a Internet y ejecutaría el caso 'pausa'. En este caso, quería escribir un código para ejecutar en los casos en que el archivo se carga sin conexión. Sin embargo, esto no sucede, y el caso de 'pausa' nunca se ejecuta cuando está desconectado o cuando se pierde una conexión a mitad de camino. La devolución de llamada de error tampoco se ejecuta. El código simplemente se cuelga allí hasta que se pueda establecer una conexión.
¿Cuál es la forma estándar de ejecutar código que solo necesita ejecutarse sin conexión (por ejemplo, cargar el archivo en el almacenamiento local hasta que se pueda establecer una conexión) en el método uploadTask.on().
¡Gracias de antemano por cualquier ayuda!
El SDK de Firebase para Cloud Storage no considera una condición de error no tener una conexión a Internet. En su lugar, simplemente volverá a intentar la operación con retroceso exponencial.
El evento de pause solo se activa cuando usted mismo llama a la función de pause() , hasta donde yo sé y puedo ver en la fuente SDK .