// 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)
答案 0 :(得分:0)
是的,您可以在另一个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);
});
}
答案 1 :(得分:0)
这就是我解决这个问题的方法,我知道它很难看,但这是我现在能做的最好的事情。
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);
});
});
}