Facebook股票计数,暂停直到回调功能结束

Facebook shares count, pause until callback function finishes

本文关键字:回调 功能 结束 暂停 Facebook      更新时间:2023-09-26

我正在尝试获取一个页面上多个URL的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的回调函数完成,然后继续,或者我是以错误的方式处理这个问题?

基本上没有什么好方法可以随心所欲。此外,你不应该试图这样做。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)
    });
});