因此,使用本机JS,我可以读取基于文本的Blob,如下所示:
const getBlob = () =>
let url = // some endpoint that returns a blob
let xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = function(event) {
let blob = xhr.response;
let reader = new FileReader();
reader.addEventListener('loadend', (e) => {
let read = e.srcElement.result;
console.log(read); <-- text I want
});
let read = reader.readAsText(blob);
console.log(blob)
console.log(read)
}
xhr.open('GET', url);
xhr.send();
}
但是,我希望函数返回变量read
我的问题是,是否可以使用async / await重写它。
我问是因为我不确定reader.addEventListener(...)
内的xhr.onload
会如何工作
答案 0 :(得分:0)
尝试使用Blob.text(); // returns a Promise
。它是比FileReader.readAsText
更新的方法。但是,许多浏览器都不支持它。
- Blob.text()返回一个promise,而FileReader.readAsText()是基于事件的API。
- Blob.text()始终使用UTF-8作为编码,而FileReader.readAsText()可以使用不同的编码,具体取决于 Blob的类型和指定的编码名称。
根据here
总结的答案**** 我的建议是继续使用旧方法 ****