我想用从路径/js/testscript.js, /js/testscript.js
功能是依赖从qazxswpoi,但通话/script5.js
后testscript.js
负荷
我究竟做错了什么?脚本依赖。
$(this).testscript();
第二Deferred对象成为解决尽快DOM完成加载,它不会等待getScript加入()方法(因为那些理论上可以这样以后执行,所以他们没有得到特殊待遇)。
当$.when
(
$.getScript('/script.js').done(function() {
$.getScript('/script2.js'),
$.getScript('script3.js').done(function() {
$.getScript('/script4.js').done(function() {
$.getScript('/script5.js').done(function() {
$.getScript( "/js/testscript.js" ).done(function() {
console.log("LOADED 2");
})
})
})
})
}),
$.Deferred(function(deferred) {
$( deferred.resolve );
})
).done(function() {
console.log("TEST");
$( ".test" ).each(function() {
console.log("LOADED 1");
$(this).testscript(); //function from /js/testscript.js
});
});
完成加载,而不是在所有的脚本已经完成加载的第一个Deferred对象成为解决。在这一点上,doneCallback加载/script.js
被调用,但对于/scripts2.js
的doneCallback也已经叫,因为它是通过两个递延对象是在这一点上得到解决。
你应该把$.when(...)
回调的doneCallback为$(this).testscript();
,不为getScript("/js/testscript.js")
声明,如下所示:
when(...)
$.when(
$.getScript('/script.js').done(function() {
$.getScript('/script2.js'),
$.getScript('script3.js').done(function() {
$.getScript('/script4.js').done(function() {
$.getScript('/script5.js').done(function() {
$.getScript( "/js/testscript.js" ).done(function() {
console.log("LOADED 2");
$( ".test" ).each(function() {
console.log("LOADED 1");
$(this).testscript(); //function from /js/testscript.js
});
})
})
})
})
}),
$.Deferred(function(deferred) {
$( deferred.resolve );
})
).done(function() {
console.log("TEST");
});
似乎返回一个$.getScript
所以你可以并行使用,然后Promise
使用Promise.all
加载相关脚本加载非依赖脚本。
在下面的例子中,promise chaining取决于bar.js
而其余没有它们之间的依赖关系:
foo.js