首页 > 解决方案 > 如何等待循环结束然后设置状态?

问题描述

我从 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);
}

标签: javascriptreactjsfirebasepromisefirebase-storage

解决方案


推荐阅读