Я пишу приложение из титана, но у меня проблема с порядком выполнения моего JavaScript.
У меня есть прослушиватель событий на кнопке.Это кнопка перезагрузки, которая очищает таблицу, использует HTTPClient для получения JSON-массива «встреч», сохраняет каждую встречу и обновляет список таблиц.Проблема в том, что я сначала выполняю удаление таблицы, которая должна очистить таблицу, затем я получаю встречи, но когда приложение обновляет данные, это как будто оно делает это слишком рано, и новые встречи еще не были сохранены, потому что я получаюпустой список.Теперь, если я закомментирую строку db.deleteAll, каждый раз, когда я нажимаю перезагрузить, список обновляется новыми (и существующими) данными о встречах.
Мне нужно убедиться, что все сделано по порядку и только когдапредыдущее задание выполненоТак что assignments.download () должен выполняться ПОСЛЕ db.DeleteAll, и обновление списка должно выполняться ПОСЛЕ var allAppointments = db.All ();
Я думаю, что проблема заключается в том, что assignments.download ()функция должна выполнить HTTP-вызов GET, а затем сохранить результаты, а другие функции не ждут, пока она не будет завершена.
Вот код:
btnReload.addEventListener('click', function(e){
var affected = db.deleteAll();
appointments.download();
var allAppointments = db.all();
Ti.API.info(allAppointments);
appointmentList.setData(allAppointments);
});
Вот вызываемые функции:
db.deleteAll ():
api.deleteAll = function(){
conn.execute('DELETE FROM appointments');
return conn.rowsAffected;
}
assignments.download ():
var appointments = (function() {
var api = {};
api.download = function(){
var xhr = Titanium.Network.createHTTPClient();
xhr.onload = function()
{
var data = JSON.parse(this.responseText);
var dl = (data.length);
for(i=0; i<dl;i++)
{
//p = addRow(data,i); // returns the **arr array
//Ti.API.info('Saving : '+data[i].first_name);
var contact_name = data[i].first_name + ' ' + data[i].last_name;
var start_date = data[i].start_date;
var reference = data[i].reference;
var comment = data[i].comment;
var appointment_id = data[i].quote_id;
var lastid = db.create(appointment_id, start_date, reference, contact_name, comment);
//Ti.API.info(lastid);
}
};
xhr.open('GET','http://********.co.uk/appointments/download/');
xhr.send();
return;
}
Любая помощь наиболее ценится!Билли