В моем приложении я загружаю сообщения пользователей, используя функцию прокрутки ajax вниз.setTimeout не работает должным образом
Итерация цикла цикла занимает слишком много времени, браузер зависает до тех пор, пока не будут показаны результаты. Поэтому я применил метод setTimeout, чтобы исправить это, но по какой-то причине поток не входит в метод setTimeout при отладке.
Также страница пуста, данные не отображаются.
success : function(responseJson) {
$("#loadingdata").toggle();
enableScrolling();
if($.isEmptyObject(responseJson)){
$("#noMorePosts").toggle();
disableScrolling();
paginationComplete=true;
}
$.each(responseJson, function (index) {
(function(index) {
setTimeout(function(index) { //the flow doesn't move inside this
var resp_JSON=responseJson[index];
var dateObj=resp_JSON.postCreationTime;
resp_JSON.postCreationTime = moment(dateObj).format("h:mm a, ddd, MMM Do YY");
var timeago = moment(dateObj).fromNow();
resp_JSON.timeago = timeago;
resp_JSON.username=userName;
var post_template = $('#homepostcontainertemplate').html();
Mustache.parse(post_template);
var post_info = Mustache.to_html(post_template, resp_JSON);
$('#homepublisherpostsdiv').append(post_info);
$('div').linkify();
});
})(index);
});
Когда поток достигает SetTimeout следующего кода он ударяется является JQuery Lib
я делаю это правильно или что-то отсутствует?
Примечание: Я получаю данные ответа от Json с сервера. Без setTimeout данные загружаются на страницу.
'console.log (1)' до первой строки на 'setTimeout' обратного вызова, она печатается в консоли? – Niloct
Я положил его перед setTimeout после (function (index) {; он печатает 1 раз в консоли, но он также говорит, что Uncaught TypeError: Невозможно прочитать свойство postCreationTime не определено 10 раз. Вероятно, код в setTimeout равен не удалось прочитать responseJSON – underdog
Есть ли конкретная причина использования инкапсулированной функции внутри $ .each? Чем она отличается от написания прямого $ .each (responseJson, function (index) {setTimeout (function() {... – jjaulimsing