Facebook API回调响应

时间:2011-09-06 08:55:00

标签: javascript jquery ajax facebook facebook-graph-api

我对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吗? 我真的不想设置一个计时器来启动该功能。

2 个答案:

答案 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]);
                    }
                }
        }