javascript - 如何等待循环结束然后设置状态?
问题描述
我从 firebase 存储中获取图像 URL,然后将每个 URL 推送到一个单独的数组中,以便稍后在我 setState 时使用它,
但是当我在 ForEach 之外记录 imgUrls 时,它返回空数组!
而且我尝试使用Promise.all()
但不工作,我无法设置状态!
那么我做错了什么?
getImages = async () => {
const refList = storage().ref('/categories/Air/');
const listAll = await refList.listAll();
let imgUrls = [];
let promise = listAll.items.forEach(async itemRef => {
try {
let url = await itemRef.getDownloadURL();
imgUrls.push(url);
console.log('array-imgUrls', imgUrls);
} catch (error) {
console.log('error', error);
}
});
const imageUrls = await Promise.all(promise).then(()=>{
this.setState({URLs:imgUrls})
});
console.log("imageUrls",imageUrls);
}
解决方案
推荐阅读
- r - 如何在R中对不同数据帧的同一列求和
- linux-kernel - 内核 4.18.10:缺少驱动程序 e100 的固件 d102e_ucode.bin
- node.js - 为什么 bootstrap-vue 需要我手动安装 jquery 和 webpack,即使我已经全局安装了它们?
- python - 如何获取 TCP 包的包数?
- python - 在 Python GTK 中从 ListBox(绑定到 ListStore)中获取选定对象
- jquery - 如何在 Kendo Grid 列中显示复选框
- winapi - FP-precision related "Debug Assertion Failed!" (I have no idea why this is happening)
- android - 无法安装 Apk 更新版本
- python - discord.py 上是否有用于用户名更改的事件处理程序?
- django - How to prevent default image from being deleted when a user gets deleted?