创建通过动态轮询添加的元素列表

时间:2013-05-13 17:16:25

标签: javascript jquery ajax django

我有一个jQuery函数,每隔10秒动态调查我的Django视图,看看是否添加了新数据:

setInterval(function() {
    $.get('pollNewEntries', {}, newEntrySuccess)
}, 10000);

function newEntrySuccess(result) {
    $.each(result, function(index, value) {
        var dateString = new Date(value.fields.pubDate);
        dateString = dateString.toDateString() + " - " + dateString.toTimeString();
        var title = "<h1>" + value.fields.title + "</h1>";
        var authorAndDate = "<h4>" + value.fields.author + 
            " - <time datetime='>" + value.fields.pubDate + "'>" + dateString + 
            "</time>" + "</h4>";
        var text = "<div class='cutText'>" + value.fields.text; + "</div>";
        var html = "<article class='text'>" + title + authorAndDate + text + "</article>";
        $('#mainLeft').prepend(html);
    }); 
}   

});

这样可行,但我保守地构建了轮询间隔和视图以考虑任何延迟时间,因此对于两个或多个单独的Ajax调用,视图通常会返回与“new”相同的文章。

我想要做的是将之前遇到的任何新文章的ID保存到某种集合中。然后我可以在每次Ajax调用返回结果时查询该集合,确保之前没有遇到过该文章,并且只有在它是新的时才进行。

我可以设置一个简单的全局列表(或一个自定义的集/字典,尽管文章的数量可能很小,所以性能上没有太大差异),或者我可以做到这一点使用cookies,但我认为cookie开销对于这个应用程序来说有点过分,我知道全局在javascript中特别有毒。在这种情况下,还是其他任何建议,或者是全球性的最佳选择?

0 个答案:

没有答案