在良好的旧IE11中使用base64(不使用promises)

时间:2019-03-11 14:20:46

标签: javascript promise internet-explorer-11

我已经实现了使用promise从文件中获取base64的方法。在边缘,镀铬和Firefox上运行良好。

问题是我还必须使其在Internet Explorer 11中工作。这不喜欢我发现的承诺。问题是IE11正在使用ES5,而Promises则出现在ES6中。 (如果我错了,请纠正我)

所以我有3种选择。

  • 尝试使用回调重写代码,以使IE11知道语法。
  • 使用通天塔(我还没有尝试过,但可以选择阅读)
  • 使用bluebirdjs(我也没有尝试过,但可以选择阅读)

哪个对我来说是最好的选择?

这是我需要更改的代码:

$('#fileselected').change(function (e) {
    var fileList = document.getElementById('fileselected').files;
    var file = fileList[0]; // User can only choose one file at a time

    getBase64(file).then(
        data => {
            var fileObj = { name: file.name, base64: data };
            postFilesToUpload.push(fileObj); // Collecting the files, if user wants to add multiple
        }
    );

    $("#postfilesadded").append("<li><h5>" + file.name + "</h5></li>"); // Show the user which files he have selected to upload
});

此方法使用的是我需要更改的另一种方法:

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

0 个答案:

没有答案