У меня есть две основные петли для posts
и comments
. Однако комментарии не отображаются, по-видимому, потому, что идентификатор сообщения еще не включен в DOM (?)..each() петля ждет, пока другой цикл не закончится до начала
$.getJSON('fresh_posts.php',function(data){
//posts
$.each(data.freshposts, function(id, post) {
// set variables and append divs to document
var id = post.id;
...
});
// comments attached to each post
$.each(data.freshcomments, function(id, commentList) {
$.each(commentList, function(index, c) {
// set variables and append comments to each post div
var postid = c.postid; // this is the same as post.id (linked)
...
var full = "<div> ... </div>";
$('#comment-block'+postid).append(full); // comment-block+postid is attached with each post div, so it tells the comment which div it should be appended to.
})
});
});
Не показывать комментарии^
Если я обернуть петлю $.each
для комментариев в setTimeOut(function(){},1)
, комментарии могут отображаться - Я полагаю, что нужно ждать 1 миллисекунду до того, как цикл может начаться ? Однако это не похоже на хороший/безупречный способ обеспечить это.
setTimeOut(function(){
$.each(data.freshcomments, function(id, commentList) {
...
})
},1)
Выводит комментарии^
Ваш код должен работать нормально, как это. Существуют ли какие-либо асинхронные методы, используемые в вашем первом блоке $ .each? –
Что такое асинхронный метод? – frosty
Поиск в официальных документах jquery для 'обещания' – Leo