如何等待循环结束然后设置状态?

时间:2020-04-12 23:48:35

标签: javascript reactjs firebase promise firebase-storage

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

0 个答案:

没有答案