读取文本文件内容Javascript



我想访问"加载";作用我知道这与异步有关。这是我的js函数:

function testZ() {
var entireFile = document.getElementById("input").files[0];
var reader = new FileReader();
reader.readAsText(entireFile, "UTF-8");
reader.onload = function (e) {
var rawLog = reader.result;
console.log(rawLog);
};
// access to file content

谢谢!

传统上,您可以使用类似的回调模式

function testZ(cb) {
var entireFile = document.getElementById("input").files[0];
var reader = new FileReader();
reader.readAsText(entireFile, "UTF-8");
reader.onload = function (e) {
var rawLog = reader.result;
cb(rawLog);
};
}
testZ(contents => {
// contents accessible here
})

或者,您可以使用Promises和async/await 使代码看起来更像同步代码

function testZ() {
return new Promise((resolve, reject) => {
var entireFile = document.getElementById("input").files[0];
var reader = new FileReader();
reader.readAsText(entireFile, "UTF-8");
reader.onload = () => resolve(reader.result);
reader.onerror = reject;
});
};
(async() => {
const contents = await testZ();
// contents accessible here
})();

注意:如果您在一个函数中,则不需要异步IIFE,只需将该函数设为async即可-通常需要注意的是,该函数现在返回Promise,因此不要指望它会产生同步的结果

async someFunction() {
const fileContent = await testZ();
// contents accessible here
}

此外,顶级等待在modules中可用-因此,在这种情况下根本不需要async功能-简单地说:

const fileContent = await testZ();
// contents accessible here

最新更新