除了标准的脚本加载方法之外,
Semaphore maxInFlight = new Semaphore(MAX_REQUEST_PER_CON_REMOTE);
...
maxInFlight.acquireUninterruptibly();
ResultSetFuture future = executeAsync(...);
Futures.addCallback(future, new FutureCallback<ResultSet>() {
@Override
public void onSuccess(ResultSet rs) {
...
maxInFlight.release();
}
@Override
public void onFailure(Throwable t) {
...
maxInFlight.release();
}, executor);
我见过人们这样做:
<script src="js/script.js"></script>
有什么区别吗?
请注意:还有一个类似的What's the difference between using link and script tag to reference JavaScript source?问题询问<link href="js/script.js" as="script">
,这是不同的。
答案 0 :(得分:4)
如果该link
标记上带有rel="preload"
(或rel="modulepreload"
),它将指示一个预加载请求,该请求将预加载但不运行该脚本。当然,script
会加载并运行脚本。但是如果没有rel
,则link
是无效的,并且没有有用的作用(至少在规范方面)。
如果您在规范中查看link
,则会看到as
列为:
as
—预加载请求的潜在目的地(rel="preload"
和rel="modulepreload"
)
在指向as
属性的链接之后,显示为:
as
属性为href
属性给定的资源指定预加载请求的潜在目的地。它是一个枚举的属性。每个潜在目的地都是该属性的关键字,映射到相同名称的状态。必须在具有link
属性且包含rel
关键字的preload
元素上指定该属性。它可以在具有link
属性的rel
属性的modulepreload
元素上指定;在这种情况下,它必须具有一个类似于脚本的目标值。对于其他link
元素,不得指定。