我有page需要通过ajax加载和处理两个大型文件。我事先知道我需要下载它们,但是我无法启动ajax请求,直到另一个大的javascript文件已加载并准备好处理它们。
结果是我最终以串行而不是并行方式获取大型javascript和大型资产,我认为这几乎可以快两倍。
是否可以让浏览器预加载这些资产?
您可以在下面的屏幕截图中看到,production.min.js
之前必须加载base-2.91.wsz
,llama-2.91.mp3
甚至可以开始下载。
答案 0 :(得分: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!" );
}
});
因此,您将并行执行所有三个调用,并在完成所有三个调用后继续。