Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么脚本标记的document.write存在时间延迟?为什么脚本标记的执行会延迟?_Javascript_Iframe_Asynchronous_Document.write - Fatal编程技术网

Javascript 为什么脚本标记的document.write存在时间延迟?为什么脚本标记的执行会延迟?

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> <!-- //-----------------------------------

在我的代码中,我创建了5个带有脚本标记的iframe,以从服务器获取响应。 我们需要同时这样做。另外,由于跨域问题,我们没有选择Ajax技术,只是在创建iFrame的同时发出异步请求

<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亿个请求。