我有以下代码:
var requestEvents = getEvents();
requestEvents.done(function (resp1) {
$(resp1).find('events').each(function() {
var event_id = $(this).find('id').text();
var event_name = $(this).find('name').text();
var event_description = $(this).find('description').text();
var event_start_date = $(this).find('startDate').text();
var event_end_date = $(this).find('endDate').text();
count++;
if (count >= 2) {
// This will execute after the first request is done
var requestParticipants = getParticipants(event_id);
var requestPlaces = getPlaces(event_id);
var requestMedia = getMedia(event_id);
$.when(requestParticipants, requestPlaces, requestMedia).done(function (resp2, resp3, resp4) {
participants.push(resp2[2].responseText);
media.push(resp3[2].responseText);
places.push(resp4[2].responseText);
var new_event = {
'id' : event_id,
'name' : event_name,
'description' : event_description,
'start_date' : event_start_date,
'end_date' : event_end_date,
'participants' : participants,
'pictures' : media,
'places' : places
};
events.push(new_event);
console.log(resp2[2].responseText);
console.log(resp3[2].responseText);
console.log(resp4[2].responseText);
});
}
});
});
一切都按预期工作,但是当.done中的代码完成后,我需要执行更多代码。
我试过
.then( function(){
});
但这会在所有事件都放入数组之前运行。
我需要等待所有事件放在事件数组中的东西,这个事件现在还没有发生。我怎样才能做到这一点?
ajax调用方法:
function getEvents(){
return $.ajax({
type:"GET",
url: "http://"+server+":"+port+"/remember-me/rest/events?user="+ user,
dataType : "xml"
});
}
function getParticipants(event_id){
return $.ajax({
type:"GET",
url: "http://"+server+":"+port+"/remember-me/rest/events/"
+ event_id + "/participants",
dataType : "xml"
});
}
function getMedia(event_id){
return $.ajax({
type:"GET",
url: "http://"+server+":"+port+"/remember-me/rest/events/"
+ event_id+ "/media",
dataType : "xml"
});
}
function getPlaces(event_id){
return $.ajax({
type:"GET",
url: "http://"+server+":"+port+"/remember-me/rest/events/"
+ event_id+ "/places",
dataType : "xml"
});
}