我有一个观察数组。每个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