2014-12-11 87 views
1

我有一个page需要通过ajax加载和处理两个大型文件。我事先知道我将需要下载它们,但是我不能启动ajax请求,直到另一个大的JavaScript文件加载并准备好处理它们。我如何预加载我知道我将通过XMLHttpRequest请求的资产?

结果是我最终以串行而不是平行的方式获取大型javascript和大型资产,我认为这可能几乎快两倍。

是否有可能让浏览器预先加载这些资源?

你可以在下面的截图中看到,production.min.js必须在base-2.91.wszllama-2.91.mp3之前加载,甚至开始下载。

enter image description here

回答

0

听起来jQuery.when()会做的伎俩。直接从文档:

$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2) {  
    // a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively.  
    // Each argument is an array with the following structure: [ data, statusText, jqXHR ]  
    var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It"  
    if (/Whip It/.test(data)) {  
    alert("We got what we came for!");  
    }  
}); 

所以,你会并行执行所有三个电话,当所有三个完成后继续。

+0

我希望能够加载这些资源与我最初的JavaScript负载平行。一旦我的JavaScript应用程序下载并初始化,我已经有了它们。 – 2016-07-26 17:54:59

+0

是否将production.min.js加载为'

相关问题