Ich habe eine Implementierung, in der ich den Google Kalender erstelle Ereignis aus 2 Funktionen aufrufen. Jedes Mal, wenn mehrere Ereignisse erstellt werden. Nach der Erstellung des Erfolgsereignisses speichere ich die Rückgabedaten in meiner lokalen Datenbank. Das Problem, mit dem ich konfrontiert bin, ist, dass alle Ereignisse abgeschlossen werden können, die Seite neu geladen wird und die meisten Ereignisse nicht in der lokalen Datenbank gespeichert werden können. Ich habe versucht, mit $().ajaxStop({});
, aber vielleicht mache ich etwas falsch, so dass es nicht funktioniert. Auch mache ich es derzeit mit $.when
aber immer noch das gleiche Problem. Wie kann man das Versprechen im folgenden Szenario richtig umsetzen? Jede Hilfe wird geschätzt.mit Versprechen mit Google Kalender einfügen Ereignis
// Google Calendar Insert event start
function handleInsert(id, event){
var cal_det = JSON.parse(localStorage.getItem('calendarId'));
var CALENDAR_ID = cal_det.calendar_id;
var request = gapi.client.calendar.events.insert({
'calendarId': CALENDAR_ID,
'resource': event
});
request.execute(function(gres) {
console.log('Event created: ' + gres.htmlLink);
// this here is used to update my local database.
$.getJSON(baseUrl+'<Some URL>', {id: id, value: gres}, function(response){
console.log(response);
});
});
}
// Google calendar insert event end
function syncAppointment(){
var form = $("#google-sync");
var submiturl = $(form).attr('action');
form.find('.has-error').remove();
$.post(submiturl, form.serialize(), function(response) {
if(!response.message){
var j = 0, l = response.length;
$.each(response, function(key, value) {
handleInsert(key,value);
// this here creates event.
});
} else {
alert(response.message);
}
}, "json").done(function() {
console.log("Success.");
}).fail(function() {
console.log("Some error occured. Please try after some time.");
}).always(function() {
console.log("Completed.");
window.location.reload();
});
}
var form = $("#AppointmentAgendaForm"); var submiturl = $(form).attr('action');
if(validateForm(form) == true){
$.post(submiturl, form.serialize(), function(response) {
console.log(response);
if (!response.error && !response.message && !response.appointments) {
alert('Nomination (s) a été créé. Nous avons désactivé les créneaux horaires pour les engagements professionnels pour la période de temps définie.');
$.when.apply($, $.map(response, function(key, value) {
handleInsert(value,key);
// this here is second call. this implementation should work but does not...
})).done(function() { window.location.reload(); /* all ajax calls done now */ });
} else {
}
}, "json").done(function() {
console.log("Success.");
setTimeout(function(){ $(form).find('p.has-error').remove(); }, 3000);
}).fail(function() {
console.log("Some error occured. Please try after some time.");
}).always(function() {
console.log("Completed.");
});
}
bisschen spät zu antworten, ich werde das versuchen. obwohl ich das Problem überwand, indem ich die Struktur der Implementierung änderte. – Sp0T