首页 > 解决方案 > 将图像转换为base64字符串时,等待后仍然返回承诺

问题描述

我有下面的方法将图像转换为 base64 字符串

  const toBase64 = file => new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = () => resolve(reader.result);
    reader.onerror = error => reject(error);
  });

然后我决定使用这个函数,如下所示:

    let base_strings = files.map(async file => {
      let image = await toBase64(file);
      console.dir(image); //this console base string
      return image;
    });

但是当我尝试访问我的 base_string 数组时,我仍然得到如下承诺:

在此处输入图像描述

我不确定我做错了什么,我需要能够在数组中获取我的 base64 字符串。

标签: javascriptreactjsasync-await

解决方案


尝试Promise.all()像这样使用:

let base_strings = files.map(file => {
  return toBase64(file);
});

const myImages = await Promise.all(base_strings);

推荐阅读