Javascript异步如何等待不同数量的uploadTasks全部完成?

开发者

我有saveBlogPost()需要执行以下操作的功能:

  • 调用该uploadImages()函数将 blogPost 的图像更新到 Firebase 存储。图片数量不固定。
  • 等待所有图像的上传成功或错误。如果成功,每个图像的 URL 将在 blogPost 对象中可用。
  • 根据上传结果采取行动
    • 如果成功:将帖子保存到 Firestore
    • 如果失败:向用户显示错误消息

我的问题是如何等待不同数量的上传?

到目前为止,这是我的代码:


savePost() 函数:

function savePost() {
  uploadImages();
}

上传图片()函数:

注意: images是要上传的图像文件的数组。

function uploadImages() {
  images.forEach((image) => {
    const uploadTask = storageRef.put(file,metadata);
    uploadTask.on('state_changed',
      function progress() {
        //UPLOAD PROGRESS BAR
      },
      function error(err) {
        //SET ERROR
      },
      function complete() {
        //UPDATE IMAGE URL IN BLOGPOST OBJECT
        //SET COMPLETE
      }
  });
}

问题:

我的目的是使savePost()功能asyncawait用于uploadImages()功能。但是只有在所有图像都已解决/拒绝后,我才能解决/拒绝uploadImages()功能

就像是:

async function savePost() {
    const result = await uploadImages();
    // ACT BASED ON RESULT
  }

但我不知道如何处理该uploadImages()功能,以便仅在所有图像完成后才能解决/拒绝

我怎样才能做到这一点?

亚历山大·亚岑科
function uploadImages() {
    const promises = images.map(async image =>
        new Promise((resolve, reject) => {
            const uploadTask = storageRef.put(file, metadata);
            uploadTask.on('state_changed',
                function progress() {
                    //UPLOAD PROGRESS BAR
                },
                function error(err) {
                    //SET ERROR
                    reject(err);
                },
                function complete() {
                    //UPDATE IMAGE URL IN BLOGPOST OBJECT
                    //SET COMPLETE
                    resolve();
                }
            );
        })
    );

    return Promise.all(promises);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何等待异步完成 - NodeJs

来自分类Dev

如何等待大量任意数量的深度嵌套异步jQuery ajax调用完成

来自分类Dev

如何等待http请求完成?Javascript

来自分类Dev

Javascript-异步功能完成后如何等待下一行执行?

来自分类Dev

如何等待NSTask在异步块中完成

来自分类Dev

如何等待所有异步完成?

来自分类Dev

如何等待异步查询在for循环中完成?

来自分类Dev

如何等待异步 AudioTrack.write 完成?

来自分类Dev

如何等待异步委托

来自分类Dev

如何等待异步委托

来自分类Dev

如何等待功能完成?

来自分类Dev

如何等待诺言完成

来自分类Dev

如何等待功能完成?

来自分类Dev

如何等待任务完成

来自分类Dev

如何等待异步方法中的等待完成所有执行?

来自分类常见问题

如何等待所有异步调用完成

来自分类Dev

我应该如何等待GCD中并行异步任务的完成?

来自分类Dev

在使用检索到的数据之前,如何等待异步回调完成?

来自分类Dev

你如何等待所有异步调用在Java中完成?

来自分类Dev

在完成Rxjs Observable之前,如何等待内部定义的异步方法?

来自分类Dev

Reactive Extensions Observerable.FromAsync:如何等待异步操作完成

来自分类Dev

如何等待所有异步调用完成

来自分类Dev

如何等待通过QNetworkAccessManager完成两次异步下载?

来自分类Dev

目标C-如何等待异步调用完成

来自分类Dev

如何等待异步函数nodejs的结果

来自分类Dev

PrivateRoute-如何等待异步响应?

来自分类Dev

如何等待重写异步功能?

来自分类Dev

如何等待运行异步方法的任务

来自分类Dev

如何等待并行Linq动作完成