【发布时间】:2017-09-24 00:55:37
【问题描述】:
我有一个用于上传图片的服务。要上传图片,我要做的就是
return this.http.post(/* ... */)
并且我获得了可以在我的组件中订阅的订阅。但是当我想上传几张图片时,我必须这样做
for (let p of pics) { this.http.post(/* ... */); }
我的问题是我想返回所有调用的结果,而不是只返回一个调用。那可能吗 ?
编辑这是我的服务
addPictures(files: File[], folder: string): Observable<Parse.Object[]> {
let hasError = false;
for (let file of files) {
let [type, ext] = file.type.split('/');
if (type.toLowerCase() !== 'image' || !environment.imgExts.includes(ext.toLowerCase())) { hasError = true; }
}
if (hasError) { return Observable.throw('Invalid extension detected'); }
let observables: Observable<Parse.Object>[] = [];
for (let file of files) {
// Get its size
let img = new Image();
img.onload = () => {
// Create the Parse document
let parseImg = { url: '', type: file.type, width: img.width, height: img.height };
// Upload it on Amazon and add it to DB
observables.push(this.addPicture(parseImg, file, folder));
}
img.src = window.URL.createObjectURL(file);
}
return Observable.forkJoin(observables);
}
【问题讨论】:
-
仅供参考,我没有否决这个问题
-
我正在看这个答案,谢谢
标签: angular rxjs observable