gpt4 book ai didi

javascript - 文件读取器 API : viewing the contents outside of a callback

转载 作者:行者123 更新时间:2023-11-28 02:01:29 25 4
gpt4 key购买 nike

我一直在使用 FileReader API 来读取本地文件并将它们提供给 Java applet,目前这已经奏效了。文件被读取,applet 的行为就像它应该的那样。将文件内容(作为字符串)传递给小程序的函数目前在分配给阅读器的 onloadend() 事件的函数内部调用(我使用 onloadend() insteat 而不是 onload() 用于某些错误处理需要。虽然也许我可以用 try/catch 指令替换它,我会研究它)。现在我想将文件的内容传递给一个全局变量,以便也用 Javascript 解析它。问题是这似乎是不可能的,因为:

1) 文件加载后 FileReader 对象的 .result 成员为空(这是有道理的,看看读取器本身是异步的);

2) 如果我将 .result 成员复制到全局变量中,例如如果我这样做:

var my_string;

function load_callback()
{
//Do some stuff...
my_string = this.result;
}

...

my_reader = new FileReader();
my_reader.onloadend = load_callback;
my_reader.readAsText(my_file)
document.getElementById("empty_paragraph").innerHTML = my_string;

结果我得到了一个很好的undefined(这没有多大意义,真的)。我应该怎么办?这是其他一些安全功能,使 FileReader 无法在其回调方法之外传播文件内容吗?在任何人提到它之前——是的,该文件已由用户正确提交(正如我所说,页面的其余部分有效);是的,我已经检查过名称 my_string 没有以任何方式重复;我已经在 Chromium 和 Firefox 上测试过了,所以它不依赖于浏览器。有人可以帮助我吗?

最佳答案

同步文件读取器仅在 WebWorker 上下文中可用,因为阻塞工作线程不会导致 UI 卡住。无论如何,无法在回调之外查看内容,除非您使用:

<script type="application/javascript;version=1.7"></script>

这只适用于 firefox。它允许您使用 yield 关键字,可用于实现 fibers可用于以同步方式编写异步代码。

关于javascript - 文件读取器 API : viewing the contents outside of a callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13685409/

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