调用异步方法完成后的函数错误获取值?

时间:2012-11-17 16:00:03

标签: javascript facebook

我有一个示例代码:

window.fbAsyncInit = function() {
   FB.init({appId: appId, status: true, cookie: true, xfbml: true});

   // Additional initialization code such as adding Event Listeners goes here
   FB.getLoginStatus(function(response) {
      if (response.status === 'connected') {
         getFlag(1);
      } else if (response.status === 'not_authorized') {
         getFlag(2);
      } else {
         getFlag(3);
      }
    });   
};
var f = function getFlag(flag){};
alert(f);

结果是function getFlag(flag) {},If = 1就是,如何获得此值

1 个答案:

答案 0 :(得分:0)

您的代码中的几点。

1)由于您将getFlag函数分配给变量getFlag,因此不会执行调用f函数。因此,您需要使用f()调用该函数。

2)由于您的代码alert(f)将在函数执行之前到达,因此您的函数是异步调用。

3)如果你想要标志值,为什么你不要只声明一个变量并分配它。

var flag;
 FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
     this.flag = 1;
  } else if (response.status === 'not_authorized') {
     this.flag = 2;
  } else {
     this.flag = 3;
  }
});