Я пытаюсь получить img url с сервера, используя promise-then
, и обновить другой объект с этим 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);
Если бы вы могли дать лучший совет, я был бы признателен вам.Я действительно пытался использовать observable
в rxjs
, но не смог.
Спасибо!