0

我有一个 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 调用返回同一篇文章作为“新”文章。

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

我可以设置一个简单的全局列表(或自定义的集合/字典,虽然文章的数量可能很少,因此性能不会有太大差异)来做到这一点,或者我可以用 cookie 来做到这一点,但我认为 cookie 开销对于这个应用程序来说有点矫枉过正,我知道任何全局的东西在 javascript 中都是特别有毒的。还有其他建议,或者在这种情况下走向全球是最好的选择吗?

4

0 回答 0