2017-10-05 114 views
0

我有一個角度爲2的文件上載服務,它返回fileUpload方法的可觀察值。假設我有超過1個文件上傳。我希望能夠顯示它上傳的每個文件的狀態,也可以在所有文件完成時執行其他操作。觀察一組RxJS可觀察對象,並在它們全部完成時得到通知

所以這是這樣的。

uploadAll(files): void { 
    let fileUploadObservables = []; 

    files.forEach(file => { 
     fileUploadObservables 
     .push(this.fileUploadService.upload(file)); 
    }); 


    Observable.forkJoin(...fileUploadObservables) 
      .subscribe((res) => { 
       //Do something else when all files finish uploading 
      }); 
} 

forkJoin只通知我,當所有的人都已經完成加載,但我需要時通知他們每個人的完成,當所有的人都完成。我只能用觀察到的其中一個。

回答

0

爲了檢查所有可觀測物何時完成,您應該將第三個參數傳遞給subscribe方法。 subscribe方法最多需要3個參數。考慮:

someObservableOfObservable().subscribe(
    (observableResult) => { 
    // I will execute each time a value pass through this stream 
    }, 
    (error) => { 
    // I will execute if any exception/error is thrown 
    }, 
() => { 
    // I will execute when the Observable stream is exhausted 
    } 
)