【发布时间】:2023-03-08 12:59:02
【问题描述】:
我需要一种通过回调获取不同脚本的方法。 这个方法没问题:
fetchScripts:function() {
var _this=this;
$.when(
$.ajax({
url:_this.url + 'library/script-one.js',
type:'get',
cache:true
}),
$.ajax({
url:_this.url + 'library/script-two.js',
type:'get',
cache:true
}),
{ .... },
$.ajax({
url:_this.url + 'library/script-n.js',
type:'get',
cache:true
})
).then(function() {
console.log('fetch is done');
})
},
但我想更概括该方法,因为冗余正在增加。 是否可以向 $.when() 传递承诺? 在我的第一次尝试之下 - 但 url 总是相同的,即'script-n.js' 也许我错过了重点,您可以说明一个更“美丽”的解决方案
fetchScripts:function() {
this.deferred=new $.Deferred();
this.promise=this.deferred.promise();
var _this=this;
$.each([
'script-one.js',
'script-two.js',
( .... ),
'script-n.js'
],function() {
_this.script=this;
_this.promise.then(function(){
return $.ajax({
url:_this.url + 'library/' + _this.script,
type:'get',
cache:true
})
});
});
$.when(
this.promise
).then(function() {
console.log('fetch is done');
});
this.deferred.resolve();
},
【问题讨论】:
标签: jquery promise deferred .when