【发布时间】:2018-11-19 03:03:15
【问题描述】:
我正在尝试使用promise-then 从服务器获取 img url,并在服务器中使用该 img url 更新其他对象。
但是,我无法更新数据,因为在下载 url 之前触发更新数据的功能,所以它返回null。
所以,我认为如果我可以停止运行 forEach 直到我得到 imgUrl,那么一切都会正常运行。
这是我的代码
store.service.ts
addStoreImgList(imgArr, storeName) {
const menuUrls = this.getStoreMenuImgUrl(imgArr.imgList, storeName);
const normalUrls = this.getStoreNormalImgUrl(imgArr.normalImgList, storeName);
return {menuUrls, normalUrls};
}
getStoreMenuImgUrl(menuImg, storeName) {
const menuUrls = [];
menuImg.forEach(item => {
const imgRef = this.storageRef.child(`store/menuImg/${storeName}/${item.name}`);
imgRef.put(item).then((snapshot) => menuUrls.push(snapshot.downloadURL));
}); // Can I stop menuImg.forEach until I get a data from server here?
return menuUrls;
}
getStoreNormalImgUrl(normalImg, storeName) {
const normalUrls = [];
normalImg.forEach(item => {
const imgRef = this.storageRef.child(`store/normalImg/${storeName}/${item.name}`);
imgRef.put(item).then((snapshot) => normalUrls.push(snapshot.downloadURL));
});
return normalUrls;
}
edit-store.component.ts
const urls = this.storeService.addStoreImgList(imgArr, this.storeName);
如果您能提供更好的建议,我将不胜感激。
我实际上尝试在rxjs 中使用observable,但我不能。
谢谢!
【问题讨论】:
-
normalImg是什么?那是一个 Observable 数组? -
不,是文件图片数组
标签: angular promise rxjs angular-promise