在API回调函数中更新JS变量

时间:2015-04-08 14:48:31

标签: javascript scope facebook-javascript-sdk

我试图在我的JS中使用MVC,问题是我无法弄清楚如何获得以下行为。

我在"会员中有一个var granted" var / controller fbLoginController的函数(checkFbEmailPermission),然后我用匿名函数作为参数调用Facebook API。我希望这个匿名函数更新以前声明的变量(取决于某些条件),但我无法弄清楚原因。我知道这个例子不起作用,因为匿名函数有自己的范围。

问题是:我无法使匿名函数返回值(true或false),因为它是一个回调作为参数函数,我无法收集返回值。我也不想从匿名函数中调用其他函数(如果可能)。我尝试用两个参数(响应和授权)声明匿名函数(命名它),但我无法正确理解范围处理。

那么,您如何更改var granted内的function(response){}的价值?

var fbLoginController = {
  checkFbEmailPermission : function (){

    var granted = false; // VALUE TO BE UPDATED

    FB.api('/me/permissions', function(response) {
      // We get the permissions object contained on the response
      var permissions = response;
      for (var i = 0; i < permissions.data.length; ++i){
        var pm = permissions.data[i];
      // Search for the email permission object
        if (pm.permission == "email"){
        // Check if the email permission is granted
          if (pm.status == "granted"){
            granted = true;  // UPDATING OF THE VALUE
          }
        }
      }
    });
    // Here VALUE of granted should be true if permission is granted
  }
}

0 个答案:

没有答案