我有以下代码:
var obj = jQuery.parseJSON('<? $data = file_get_contents('dev/cache/parsed.json'); $data = str_replace("'", "\'", $data); echo $data; ?>');
由于我正在使用此加载大约500kb的数据,我想在此加载完成时向网站访问者提供反馈。我的问题是.ready()将在加载此数据之后或之前触发吗?如果它之前触发(我怀疑只考虑DOM),那么我可以在我的JS末尾添加一些会创建某种警报的东西,表明obj已经完成浏览器的处理并且它没有继续执行警报事件?
我的首要问题是浏览器执行页面的方式以及某些事件触发的时间。从我的实现,我基本上需要的东西只有在浏览器读取了整个obj变量并且完成加载页面时才会激活。我不确定.ready是否会在这里工作。
干杯
答案 0 :(得分:0)
你所拥有的代码不是异步的,它会阻止所有JS执行,直到完成。
只需将想要运行的代码放在它之后......之后。
答案 1 :(得分:0)
这是一个同步而非异步操作,因此没有向其添加回调的概念。与您在parseJson
行之后手动触发回调没有什么不同。
换句话说,您的代码将在运行时阻止所有其他JS的执行。
选项:
由WebWorker脚本完成。这些,在支持的情况下,使用单独的CPU线程运行,因此不会阻止主脚本的执行或妨碍用户与您的应用程序交互的能力
而不是PHP将文件的内容直接转储到JS中,就像目前一样,将其加载到异步AJAX上。然后,您可以根据需要在加载后成功进行回调。