我对Facebook API有疑问。我可能不是最好的方式,但这就是我所拥有的。
我有一个request_ids数组,我需要转换为用户ID。 我有一个while循环查询请求ID并获取用户ID。
function (response) {
var requestsToSend = new Array();
var i = 0;
while (i < response.request_ids.length)
{
FB.api('/'+response.request_ids[i], function(res){
requestsToSend[i] = res['to']['id'];
});
i++;
}
console.log(requestsToSend[0], requestsToSend[1], requestsToSend[2], requestsToSend[3]);
}
这很好用。但是,当我回显返回的id(console.log)时,它们是未定义的,因为FB.api
尚未返回值/响应。
只有在console.log
返回值后才能触发FB.api
吗?
我真的不想设置一个计时器来启动该功能。
答案 0 :(得分:0)
将您的console.log调用放入响应函数中:
function (response) {
var requestsToSend = new Array();
var i = 0;
while(i < response.request_ids.length) {
FB.api('/'+response.request_ids[i], function(res){
requestsToSend[i] = res['to']['id'];
console.log(requestsToSend[i]);
});
i++;
}
}
答案 1 :(得分:0)
我修复了这个问题,但对解决方案不太满意
function (response) {
var requestsToSend = new Array();
var i = 0;
var arry = new Array();
FB.api('/'+response.request_ids[0], function(res){
if(typeof res['to'] != 'undefined'){
useResults(res['to']['id']);
}
});
FB.api('/'+response.request_ids[1], function(res){
if(typeof res['to'] != 'undefined'){
useResults(res['to']['id']);
}
});
FB.api('/'+response.request_ids[2], function(res){
if(typeof res['to'] != 'undefined'){
useResults(res['to']['id']);
}
});
FB.api('/'+response.request_ids[3], function(res){
if(typeof res['to'] != 'undefined'){
useResults(res['to']['id']);
}
});
function useResults(value){
arry.push(value);
timeToFire(arry);
}
function timeToFire(arry){
if(arry.length == response.request_ids.length){
//console.log(arry);
playTheGame(arry[0], arry[1], arry[2], arry[3]);
}
}
}