У меня есть следующая функция:
getTasks: function()
{
var taskRequest = Titanium.Network.createHTTPClient();
var api_url = 'http://myawesomeapi.heroku.com/users/' + Ti.App.Properties.getString("userID") + '/tasks';
var tasks = [];
taskRequest.onload = function() {
var response = JSON.parse(this.responseText),
len = response.length,
i = 0,
t;
for(; i < len; i++)
{
task = response[i];
var newTask = {};
newTask.rowID = i;
newTask.title = task.title;
newTask.description = task.description;
newTask.id = task.id;
newTask.hasChild = true;
tasks.push(newTask);
}
alert(tasks);
}
taskRequest.open('GET', api_url, false);
taskRequest.setRequestHeader('Content-Type', 'application/json');
taskRequest.send();
alert(tasks);
// return tasks;
}
Эта функция в моем контроллере; Я называю это, на мой взгляд, когда мне нужно загрузить данные. Однако я хочу return
эти данные, чтобы я мог назначить их переменной в представлении.
Теперь, что происходит, так это то, что он возвращает пустоту. Последнее предупреждение (нижнее) кажется слишком быстрым, и оно возвращает пустой массив, а то, которое получает предупреждение только после выполнения функции загрузки, содержит то, что мне нужно.
Теперь мой очевидный вопрос, как я могу заставить мою функцию возвращать массив с данными, а не без?
Установка таймера кажется едва ли правильным решением. Спасибо!