私は観測値の配列を持っています。各観測対象は、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>
であるため、ファイルのアップロード操作を表します。
このコードでは、すべてのファイルがアップロードされ、完了した各観察可能ファイルにthis.onSuccess.emit(data)
が実行されます。
問題は次のとおりです。すべてが完了したらthis.isUploading$
〜false
に設定できますか?
UPDATE:
私はこのようなもののonCompleted
関数内で変数を割り当てずに何かを達成したいと思います。例:私は2つの観測を取得し、私はいつでも、後でそれをサブスクライブしたい
source$.subscribe(data => this.onSuccess.emit(data),
err => console.log(err),
() => this.isUploading = false);
。
あなたは単にそれのためBehaviorSubject
を使用することができます
;'?すべてのファイルがアップロードされていることをどのように知っていますか? – kat1330
'this.onSuccess.emit'を呼び出すと同時に呼び出します。 – cyrix
'this.onSuccess.emit'が各観測対象に対して実行されます。すべての操作が完了したときにのみ 'false'を設定したいと思います。 – kat1330