同步调用另一个javascript函数中的函数

时间:2016-03-31 07:33:12

标签: javascript synchronization

我试图在checkLoginStatus函数中调用getUserAlbum函数,在getUserAlbum我正在捕获checkLoginStatus的响应返回,并代表我需要的响应在getUserAlbum函数下工作。

但问题是这个getUserAlbum函数不会等待响应并执行我不想要的下一行。

这是我的职能:

   var accessToken = '';

   checkLoginStatus = function () {
        FB.getLoginStatus(function(response) {
            if (response.status === 'connected') {
                accessToken = response.authResponse.accessToken;
                console.log(accessToken + ' => in check login status');
                return accessToken;
            } else {
                return false;
            }
        });
    }

    getUserAlbum = function () {
        var token = checkLoginStatus();
        console.log(token + ' => in get album function'); // it log undefined here that is why else part executes.
        if(token) {
            FB.api(
                "/me/albums/", {'accessToken': token},
                function (response) {
                  if (response && !response.error) {
                    console.log(response);
                  }
                }
            );
        } else {
            alert("You are not logged in");
        }
    }

有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

  

FB.getLoginStatus是异步的...使用callbacks作为response的{​​{1}} api将是异步的。您无法确定何时会收到。

您的功能已执行,并且在收到FB之前会返回控制权,因此它将为response

undefined中,您传递callbacks,因为参数将在稍后的程序中执行。

function