У меня странное поведение, которое выглядит как проблема с (а) синхронными вызовами методов?!?
Я не уверен!
Функция получает данные с помощью getJSON, обрабатывает эти данные, добавляет их в таблицу, которую можно сортировать с помощью плагина сортировки таблиц (http://tablesorter.com/).
Здесь некоторые части кода. Функция получает данные с помощью getJSON:
jQuery.getJSON(url,{},function(data)
{
success:{ ....
в блоке успеха данные будут обрабатываться в цикле for-each. во время этого цикла for-each каждый элемент JSON будет обрабатываться (doSomething ()) и добавляться в таблицу HTML:
success:{ [some-code]
$.each (data.words, function (i,n)
{result=doSomething(n);
obj=jQuery('#Template').clone().appendTo('#table');
obj.html(result);
}
наконец, после этого для каждого я должен обновить расширение таблицы-сортировщика и начать новую сортировку:
jQuery("#table").trigger("update");
$("#table").trigger("sorton",[[[1,1]]]);
}; //end of "success
Этот код упрощен. Проблема в том, что $("#table").trigger("sorton",[[[1,1]]]);
работает правильно, только если я запускаю эту функцию с задержкой setTimeout('$("#trends").trigger("sorton",[[[1,1]]]);',20);
.
Я думаю, что вывод obj.html(result);
будет асинхронным. Поэтому, если я запускаю функцию сортировки без setTimeout
, функция сортировки не находит данных во время выполнения.
Есть ли способ сделать этот блок успеха линейным?
Спасибо за любую помощь !!