JavaScript на Appcelerator.Извлечение данных из функции обратного вызова - PullRequest
0 голосов
/ 30 марта 2011

Версия Titanium SDK: 1.6.1
Версия iPhone SDK: 4.2

Я занимаюсь разработкой приложения Titanium Appcelerator.

Я получил функцию в отдельном файле, которая возвращает разделдля табличного представления (http://pastie.org/1734554) и для основного файла я получил вызов этой функции с обратным вызовом. Я хочу иметь возможность извлечь данные обратного вызова и добавить их в массив (http://pastie.org/1734548)но я не могу получить эти данные из вызывающей функции. Как это делается?

1 Ответ

0 голосов
/ 30 марта 2011

Вы сталкиваетесь с асинхронной природой AJAX. Переместите ваше оповещение в функцию обратного вызова, и оно будет работать как положено:

var rowData = [];

rowData.push("THIS ADDS TO THE ARRAY");

loadPhones(function(data) { 
    rowData.push(data);
    alert(rowData);
});

Причина, по которой вы должны передать функцию на loadPhones, заключается в том, что вы не хотите, чтобы браузер блокировался во время получения списка телефонов. Как вы и написали, функция анонимного обратного вызова не была выполнена к тому времени, как вы получили оператор alert.

Делайте все, что вам нужно, с извлеченными данными внутри обратного вызова loadPhones.

...