【问题标题】:Javascript SDK: can i have another FB.api() calls inside FB.api()Javascript SDK:我可以在 FB.api() 中调用另一个 FB.api()
【发布时间】:2013-04-24 20:02:43
【问题描述】:
// count total no. of groups created by me
function totalGroups(response) {
    FB.api('/me/groups', {fields:'owner'}, function(g_response) {
        for (i in g_response.data) {
            FB.api('/me', function(m_response) {
                var c = 0;
                if (g_response.data[i].owner.name == m_response.name) {
                    c++;
                }
            });
        }
        console.log('Total:' +c);
  });
}

嗨,我可以像在上面的代码中那样在 FB.api() 中调用另一个 FB.api(),因为我无法获得 if (g_response.data[i].owner 的值.name == m_response.name)

【问题讨论】:

标签: javascript facebook facebook-javascript-sdk


【解决方案1】:

是的,您可以将 FB.api() 调用嵌入到另一个 Fb.api() 调用中,但由于 FB.api() 调用是异步的,因此可以保证流程。 我在您的代码中发现的一个问题与var c 有关。 首先它超出了console.log('Total:' +c) 方法的范围,而且你已经在循环中声明了它,这意味着它的值将在每次循环执行后重置。

试试这个:

// count total no. of groups created by me
function totalGroups(response) {
    var c = 0;
    FB.api('/me/groups', {fields:'owner'}, function(g_response) {
        for (i in g_response.data) {
            FB.api('/me', function(m_response) {               
                if (i.owner.name == m_response.name) {
                    c++;
                }
            });
        }
        console.log('Total:' +c);
});
}

【讨论】:

  • 感谢@ThePCWizard,您的示例仍然有一个未定义的i.owner.name,但通过一些小实验,我让它工作了。再次感谢。
  • 很高兴,我能帮上忙,继续编码!!
【解决方案2】:

这就是我解决问题的方法,我知道它很丑,但这是我目前能做的最好的。

function totalGroups(response) {
    var c = 0;
    FB.api('/me', function(m_response) {
        FB.api('/me/groups', {fields:'owner'}, function(g_response) {
            for (i in g_response.data) {            
                if (g_response.data[i].owner) {
                    if (g_response.data[i].owner.name == m_response.name) {     
                        c++;
                    }
                }
            }
            console.log('Total: ' + c);
        });
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多