我有一個觀察數組。每個observable都是需要通過HTTP請求上傳的文件。當所有的觀測數據都完成時通知
我想要做的兩件事情:
- 對於每一個上傳的文件我已經發出將在父組件來處理事件。
- 當所有文件上傳時,我已返回通知,所有可觀察項已完成。
我開始使用此代碼:
this.isUploading$ = Observable.of(true);
const source$ = Observable.from(files)
.concatMap(file => this.uploadSingleFile(file));
source$.subscribe(data => this.onSuccess.emit(data));
可觀察isUploading$
表示上傳過程開始,並在HTML消耗。我想根據isUploading$
的狀態顯示微調。
可觀察source$
表示文件上傳操作,因爲方法this.uploadSingleFile(file)返回Observable<Response>
。
此代碼將上傳所有文件並對每個完成的observable執行this.onSuccess.emit(data)
。
現在的問題是:如何在完成所有工作後將this.isUploading$
設置爲false
?
UPDATE:
我想實現這樣的事情,但沒有在onCompleted
功能分配變量。例如:
source$.subscribe(data => this.onSuccess.emit(data),
err => console.log(err),
() => this.isUploading = false);
我想檢索兩個觀察對象,然後在我想要的時候訂閱它們。
在那裏我有打電話給'this.isUploading $。接下來(真);'?我如何知道所有文件都上傳了? – kat1330
在你調用'this.onSuccess.emit'的同時調用它。 – cyrix
'this.onSuccess.emit'爲每個可觀察對象執行。我只想在所有操作完成時設置「false」。 – kat1330