如何等待 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()
之后打电话。
我正在尝试将多张图片上传到 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()
之后打电话。