Обратный вызов API Facebook при ответе - PullRequest
0 голосов
/ 06 сентября 2011

У меня проблема с API Facebook.Возможно, я не собираюсь говорить об этом лучшим способом, но вот что у меня есть.

У меня есть массив request_ids, который мне нужно преобразовать в идентификаторы пользователей.У меня есть цикл while, который запрашивает идентификаторы запроса и получает идентификатор пользователя.

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

Это прекрасно работает.Однако, когда я повторяю возвращенные идентификаторы (console.log), они не определены, потому что FB.api еще не вернул значения / ответы.

Есть ли способ запустить console.log только один разFB.api вернул значения?Я не хочу устанавливать таймер для запуска функции.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2011

Iv исправил проблему, но не очень доволен решением

    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]);
                    }
                }
        }
0 голосов
/ 06 сентября 2011

Поместите ваш вызов 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++; 
    }       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...