JavaScript - 执行<script>标记的顺序

时间:2017-02-10 02:08:24

标签: javascript

此SO问题和许多其他类似的说明,订单在页面上执行&lt; script&gt; 的操作应与在html文档中定义这些标记的顺序相同。

&#xA;&#xA;

我创建了一个简单的Java(服务器端)测试应用程序,它允许执行请求并在返回响应之前等待指定的时间段(底部的相关代码片段)这个问题)。它有一个简单的API:

&#xA;&#xA;
  http:// localhost:8080 / latency?time = XXX&amp; response = YYY&#xA;  
&#xA;&#xA;

示例请求将在一秒钟(1000毫秒)后返回 console.log('done')

&#xA;&# XA;
 <代码>的http://本地主机:8080 /等待时间= 1000&安培;响应=的console.log(%27done%27)&#XA;  
&#XA;& #xA;

接下来我创建了一个简单的index.html页面(由nginx提供):

&#xA;&#xA;
 &lt ;!DOCTYPE html&gt;&#xA;&lt; html&gt;&#xA; &LT; HEAD&GT;&#XA; &lt; meta http-equiv =“Content-Type”content =“text / html; charset = utf-8”/&gt;&#xA; &lt; title&gt;测试订单&lt; / title&gt;&#xA; &LT; /头&GT;&#XA; &LT;身体GT;&#XA; &lt; script type =“text / javascript”async = false src =“http:// localhost:8080 / latency?time = 1000&amp; amp; response = console.log(%27done1%27)”&gt;&lt; / script&gt ;&#XA; &lt; script type =“text / javascript”async = false src =“http:// localhost:8080 / latency?time = 100&amp; amp; response = console.log(%27done2%27)”&gt;&lt; / script&gt ;&#XA; &lt; script type =“text / javascript”async = false src =“http:// localhost:8080 / latency?time = 10&amp; amp; response = console.log(%27done3%27)”&gt;&lt; / script&gt ;&#XA; &lt; script&gt; console.log('静态脚本没有'src“attr');&lt; / script&gt;&#xA; &lt; / body&gt;&#xA;&lt; / html&gt;&#xA;  
&#xA;&#xA;

根据我到目前为止读到的所有内容,我预计控制台的顺序输出为:

&#xA;&#xA;
  done1&#xA; done2&#xA; done3&#xA;静态脚本没有“src”attr&#xA;  
&#xA;&#xA;

这就是我得到的(Firefox 51开发控制台):

&#xA;&#xA;

&#xA;&#xA;

&#xA;&#xA;

这正是相反的顺序我期望得到。我错过了什么吗? 有没有办法以所需的顺序执行这些脚本(即按照HTML中定义的顺序)?

&#xA;&#xA;

作为参考,服务器端的Java部分:

&#xA;&#xA;
  private String latency(HttpServletRequest request){&#xA;&# XA; long millis = Long.parseLong(request.getParameter(“time”));&#xA;字符串响应= request.getParameter(“response”);&#xA;&#xA;试试{&#xA;了Thread.sleep(米利斯);&#XA; return(响应!= null)?回复:“”;&#xA; } catch(InterruptedException e){&#xA;抛出新的RuntimeException(e);&#xA; }&#XA;}&#XA;  
&#XA;

1 个答案:

答案 0 :(得分:5)

async布尔属性。它的价值无关紧要。删除属性。