Facebook股票数量暂停,直到回调函数完成为止

时间:2016-05-04 22:11:27

标签: javascript facebook

我正试图在一个页面上获得关于许多网址的Facebook分享数量。为此,我为每个人打电话http://graph.facebook.com。因为我在一个循环中执行此操作而遇到问题,我的循环在我的回调函数完成之前执行所以我遇到了麻烦。我的代码看起来像这样

    $('span.share_counter').each(function() {
            site_url=$(this).attr('id');
            getJSON(site_url, function(err, data) {
                alert(site_url);
            });
        });

有没有什么可以使循环等到getJSON的回调函数完成然后继续或者我是以错误的方式接近它?

1 个答案:

答案 0 :(得分:1)

基本上没有办法做你想做的事。而且,你不应该试图这样做。 Javascript在事件循环上运行,这意味着如果您有一个特定的操作阻止,则整个UI会冻结。

回调的创建允许UI通过让其他作业转向处理来继续。 getJson因某种原因接听回电。它可能会阻塞很长时间,这对你的事件循环来说很糟糕。

您应该尝试重新构建代码,以便不需要getJson()调用立即返回。

您可能想要做的事情:

$('span.share_counter').each(function() {
    var curElement = $(this);
    var site_url = curElement.attr('id');
    getJSON(site_url, function(err, data) {
        modifyElement(curElement, data)
    });
});