我有以下要求:
var req1 = $.ajax({
type: "GET",
url: url,
dataType : "xml"
});
req1.done(function (resp1) {
$(resp1).find('interest').each(function() {
var interest_id = $(this).find('id').text();
var interest_name = $(this).find('name').text();
var request = $.ajax({
type:"GET",
url: "http://en.wikipedia.org/w/api.php?action=parse&format=json&page="+ interest_name + "&redirects&prop=text",
dataType: "jsonp"
});
requestsArray.push(request);
});
$.when.apply(null, requestsArray).done(function () {
console.log("entrou");
});
});
但是当我进入
时$.when.apply(null, requestsArray).done(function () {
console.log("entrou");
});
我不知道如何在requestsArray中找到个人回复。我怎样才能做到这一点?我已经尝试过但似乎没有任何效果。
答案 0 :(得分:2)
您可以使用arguments
对象访问传递给函数的未知数量的值:
$.when.apply($, requestsArray).done(function(){
console.log(arguments); //plain arguments object
console.log([].slice.call(arguments)); //arguments turned into real array
});
请参阅MDN docs on the arguments object
由于您正在将$.ajax
推送到数组中,您可能会考虑删除它们将传递的其他参数:
var request = $.ajax({
type:"GET",
url: "http://en.wikipedia.org/w/api.php?action=parse&format=json&page="+ interest_name + "&redirects&prop=text",
dataType: "jsonp"
}).then(function(data, textStatus, jqXHR){
return data; //this will make sure textStatus and jqXHR aren't passed any further
});