如何等待 firebase 图片上传

How to wait for firebase image upload

我正在尝试将多张图片上传到 firebase,但我需要先 return 编辑 url 才能继续。在继续之前有什么方法可以等待 return 吗?

我的代码是:

data.forEach((element) => {
  const sessionId = new Date().getTime();
  Blob.build(RNFetchBlob.wrap(element.path), { type : 'image/jpeg' })
  .then((blob) => {firebase.storage()
    .ref('images')
    .child(`${sessionId}`)
    .put(blob, { contentType : 'image/png' })
    .then((snapshot) => {
      element.image = snapshot.metadata.downloadURLs[0];
    })
  });
});

Parse.Cloud.run('doSomething', {
  data : data,
}).then(res => {
  dispatch({
    type: 'WE_DID_SOMETHING',
  });
});

我想上传多张图片,所以我会在调用 Parse 之前多次调用 firebase。我如何才能确保在继续之前从 firebase 调用返回 urls?

如有任何帮助,我们将不胜感激。

我相信你要找的是 Promise.all():

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

Promise.all(array) 只有在 array 中的所有承诺都已解决后才会解决。让您的 forEach 在每次迭代时创建一个 promise 对象(而不是使用 .then() 单独处理每个解析)并将其推送到数组,然后 运行 Promise.all(array)data.forEach() 之后打电话。