我试图在我的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
}
}