Estoy tratando de implementar una carga de archivos en Angular. Para evitar restricciones de tamaño de archivo, implementé un punto final de API que recibe fragmentos de un archivo. Después de recibir todos los fragmentos, se debe llamar a otro punto final que vuelva a ensamblar los fragmentos en el servidor. Por lo tanto, necesito saber cuándo finalizan todas las solicitudes de publicación. Preferiblemente sin usar Promesas. El problema es que soy nuevo en Angular (e incluso en JS), así que me pregunto cómo puede funcionar esto.
let i = 0; for(let offset = 0; offset < file.size; offset += chunkSize) { let chunk = file.slice( offset, offset + chunkSize ); let formData = new FormData(); formData.append("fileUpload", chunk, file.name + ".part" + i); formData.append("identifier", identifier.toString()); this.http.post(this.baseUrl + "Upload", formData).subscribe(); }Los coloca en una matriz y utiliza forkJoin y luego se suscribe a eso.
Esto llamará a todas las solicitudes http a la vez, y la función de suscripción se llamará una vez que todas estén completas.
let i = 0; const obsArray = []; for( let offset = 0; offset < file.size; offset += chunkSize ){ let chunk = file.slice( offset, offset + chunkSize ); let formData = new FormData(); formData.append("fileUpload", chunk, file.name + ".part" + i); formData.append("identifier", identifier.toString()); obsArray.push( this.http.post(this.baseUrl + "Upload", formData) ). } forkJoin(obsArray).subscribe();