Javascript 反应-多个图像上载时间错误(Firebase Firestore和Storage)

Javascript 反应-多个图像上载时间错误(Firebase Firestore和Storage),javascript,reactjs,firebase,google-cloud-firestore,storage,Javascript,Reactjs,Firebase,Google Cloud Firestore,Storage,我在尝试在正确的时间在Firebase Firestore和存储寄存器上注册数据时遇到一些问题 我使用的是React和Firebase,我有一个屏幕,用户可以在其中注册一个球及其信息和图像。一旦用户提示了该信息,我将使用下面的Firebase函数。首先,我注册新创建的数据,获取其ID,然后使用它在存储器中创建路径,然后保存用户上传的图像。Firestore和Storage的数据都在按其应有的方式保存,但计时除外 问题是,我在添加了球的信息之后,直到上传完图像之后,才得到响应。一旦我运行下面的代码

我在尝试在正确的时间在Firebase Firestore和存储寄存器上注册数据时遇到一些问题

我使用的是React和Firebase,我有一个屏幕,用户可以在其中注册一个球及其信息和图像。一旦用户提示了该信息,我将使用下面的Firebase函数。首先,我注册新创建的数据,获取其ID,然后使用它在存储器中创建路径,然后保存用户上传的图像。Firestore和Storage的数据都在按其应有的方式保存,但计时除外

问题是,我在添加了球的信息之后,直到上传完图像之后,才得到响应。一旦我运行下面的代码,我会在
console.log(resultCheck)
(这是一个承诺)所在的位置和
console.log(快照)之前立即得到响应。我需要同时返回两个响应,但找不到正确的异步时间

  async registerBall(ball, images) {
    let result = await this.firebase.firestore()
      .collection("balls")
      .add(ball)
      .then(async function(ballResult) {

        if (images.length > 0) {
          var storageRef = firebase.storage().ref();
          let imageUploadResult = await images.map(async image => {

            let uploadTask = await storageRef
              .child("images/balls/" + ballResult.id + "/" + image.name)
              .put(image.file, { contentType: image.file.type })
              .then(snapshot => {
                console.log(snapshot);
                return { isError: false };
              })
              .catch(error => {
                return { isError: true, errorMessage: error };
              });
            return uploadTask;

          });
          let resultCheck = { isError: false };
          imageUploadResult.forEach(result => {

            if (result.isError) {
              return (resultCheck = {
                isError: true,
                errorMessage: result.errorMessage
              });
            }

          });

          console.log(resultCheck);
          return resultCheck;

        } else {
          return { isError: false };
        }
      })

      .catch(function(error) {
        return { isError: true, errorMessage: error };
      });
    return result;
  }

谢谢你的帮助

此问题可能是您在上载时试图
等待
您的
图像。map
实际上返回了一系列承诺。要等待所有这些,您可以使用
Promise.all
,即:

const imageUploadPromises = images.map(async image => {...
然后:


我已经设法把所有的承诺都变成了承诺。不遵守每一个承诺是错误的。谢谢
const imageUploadResults = await Promise.all(imageUploadPromises);