Javascript 为什么脚本标记的document.write存在时间延迟?为什么脚本标记的执行会延迟?
在我的代码中,我创建了5个带有脚本标记的iframe,以从服务器获取响应。 我们需要同时这样做。另外,由于跨域问题,我们没有选择Ajax技术,只是在创建iFrame的同时发出异步请求Javascript 为什么脚本标记的document.write存在时间延迟?为什么脚本标记的执行会延迟?,javascript,iframe,asynchronous,document.write,Javascript,Iframe,Asynchronous,Document.write,在我的代码中,我创建了5个带有脚本标记的iframe,以从服务器获取响应。 我们需要同时这样做。另外,由于跨域问题,我们没有选择Ajax技术,只是在创建iFrame的同时发出异步请求 <script type="text/javascript" href="http://www.example1.com/json.js"></script> <!-- //-----------------------------------
<script type="text/javascript" href="http://www.example1.com/json.js"></script>
<!-- //---------------------------------------------------------------------(1)-->
<script type="text/javascript">
var url = "http://www.example2.com/getResponse/";
var count = 5;
var callback = "callback";
function iframeCallback(index) {
var iframe = document.createElement('iframe');
iframe.style.border='0px';
iframe.style.width ='0px';
iframe.style.height='0px';
document.body.appendChild(iframe);
var content = "<script type='text/javascript'>";
content += "var begin = new Date();"; //------------------(2)
content += "var jsText = \"<script type='text/javascript' src='" + url + "'></\" + \"script>\";";
content += "document.write(jsText);";
content += "</"+"script>";
content += "<script type='text/javascript'>";
content += "var data = eval('"+callback+"');"; //------------------(3)
content += "window.parent.getRepsonse(data);";
content += "</"+"script>";
}
function getRepsonse(data) {
//Deal with the responses here
//------------------------------------------------------------------(4)
}
function doMainProcess() {
for (i=0; i<count; i++) {
iframeCallback(i);
}
//pause the main thread here to wait until calls are finished
//------------------------------------------------------------------(5)
//go on to do something else
}
</script>
变量url=”http://www.example2.com/getResponse/";
var计数=5;
var callback=“callback”;
函数iframeCallback(索引){
var iframe=document.createElement('iframe');
iframe.style.border='0px';
iframe.style.width='0px';
iframe.style.height='0px';
document.body.appendChild(iframe);
var-content=“”;
content+=“var begin=new Date();”;/----------------------(2)
内容+=“var jsText=\”\“;”;
content+=“document.write(jsText);”;
内容+=”;
内容+=”;
content+=“var data=eval(““+callback+”);“;/-----------------(3)
content+=“window.parent.getRepsonse(数据);”;
内容+=”;
}
函数getRepsonse(数据){
//在这里处理回答
//------------------------------------------------------------------(4)
}
函数域进程(){
对于(i=0;i
您无法控制浏览器呈现DomeElement或加载资源的时间,只能对它们作出反应
如果存在延迟,为什么不编写一个同步函数,等待所有异步进程完成(如收集数据)
您不能暂停它,您只需不渲染它或渲染它,而是隐藏它
我最担心的是,你正在考虑用一种你似乎不懂的技术来建立一个高流量的服务。你试图用一种不支持计时的语言来计时
另外,脚本中有一个错误,内容
实际上没有被写入
而且eval
是邪恶的。必须有更好的方法。Egad..为什么不在后端(PHP、Python等)执行此操作这将是非常简单的,使用<代码> CURL或类似的LIB。我们在客户端做了这件事,因为我们将处理50亿个以上的请求。同时使用Lab.JS 50亿记录来处理负载,并且使用客户端JavaScript?:每个客户端只会并行调用5个调用,而不是所有的5个调用。从同一个客户端调用了10亿个请求。