gpt4 book ai didi

javascript - 使用 JavaScript 完全在客户端将给定的文本文件字符串分配给变量

转载 作者:行者123 更新时间:2023-11-30 14:24:34 25 4
gpt4 key购买 nike

我正在尝试创建一个几乎完全是客户端的项目,该项目使用函数读取给定的文本文件并将文件的内容(作为字符串)返回给变量。如果对方法有任何影响,其中一些文件可能非常非常大。我想要一个可以像...一样执行的功能

// fileInputID is the input type='file' id
var fileText = ReadTextFromFile('fileInputID');

到目前为止,我有这样的东西没有做我想做的,但它是我能得到的最接近的......

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type="file" id="xFile" value="Get Data">
<script>
// A non-blocking sleep function (I think)
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
};
async function ReadFile(fileInputID) {
// Get the selected file from the input id.
var file = document.getElementById(fileInputID).files[0];
var str = "";
var fileReader = new FileReader();
fileReader.onloadend = function(evt) {
str += fileReader.result;
};
// Read the file.
fileReader.readAsText(file);
// Wait for file to be completely read.
do {
await sleep(100);
} while (fileReader.readyState != 2);
console.log(str); // Correctly prints the string.
console.log(typeof str); // Type of str is String.
return str; // OH NO! Doesn't send anything back?
}
</script>
<div id="output"></div>
<button id="output" onclick="var fileText = ReadTextFromFile('xFile'); console.log(fileText);"></button>
</body>
</html>

我真的很想不必将它发送到服务器,只是让它再次发回。另外,我希望它保留一个返回函数,而不是试图将它保存到一个全局变量中,这样它就可以保持更动态。任何想法都会有很大帮助。

真的很想以可能的方式结束,比如...

var xData = ReadTextFromFile('xFile');   
var yData = ReadTextFromFile('yFile');
plot(xData, yData);

最佳答案

是的, promise 是正确的方法,但轮询有点难看。而只是做:

 function readFileFrom(fileInputID) {
return new Promise((resolve, reject) => {
var file = document.getElementById(fileInputID).files[0];
var fileReader = new FileReader();
fileReader.onloadend = function(evt) {
resolve(fileReader.result);
};
// Read the file.
fileReader.readAsText(file);
});
}

现在使用它只是等待结果:

 (async function() {
const fileText = await readFileFrom("id");
})();

关于javascript - 使用 JavaScript 完全在客户端将给定的文本文件字符串分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52155181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com