Facebook graph api 在变量中存储API调用电子邮件

Facebook graph api 在变量中存储API调用电子邮件,facebook-graph-api,scope,user-permissions,Facebook Graph Api,Scope,User Permissions,我在javascript变量中存储用户的电子邮件地址时遇到问题。我要做的是调用API,获取电子邮件地址,并将其存储在“email”变量中,以便在屏幕上的其他函数中使用 我的代码如下所示: function emailCheck(){ var email; FB.api('/me',email = function(response){ return response.email; }) } alert(email); 我做了检查

我在javascript变量中存储用户的电子邮件地址时遇到问题。我要做的是调用API,获取电子邮件地址,并将其存储在“email”变量中,以便在屏幕上的其他函数中使用

我的代码如下所示:

function emailCheck(){
    var email;
    FB.api('/me',email = function(response){
        return response.email;
        })
    }

    alert(email);

我做了检查,以确保我有适当的权限。我会把
警报(response.email)
放在我的回复部分,它会用正确的电子邮件发出警报。问题是,我无法在函数的外部访问电子邮件变量。

由于所有API方法都是异步的,因此需要使用continuation

function emailCheck(continuation){
  FB.api('/me', function(response){
    continuation(response && response.email);
  });
}

emailCheck(function(email) {
  alert(email);
}

另一种方法是使用承诺、未来或延期(实际上是同一件事)来抽象这些内容。

您需要使用延续,因为所有API方法都是异步的

function emailCheck(continuation){
  FB.api('/me', function(response){
    continuation(response && response.email);
  });
}

emailCheck(function(email) {
  alert(email);
}

另一种方法是使用承诺、未来或延期(实际上是同一件事)来抽象这一部分。

啊,异步部分很好。已经有一段时间没有使用JSSDK构建了。删除了我的答案,并认可了这一条。好吧,我似乎无法让它起作用。我会使用
email=emailcheck(函数(email){alert(email);}
我仍然得到'undefined'@RickeyESmith-异步方法无法返回数据-它们必须接受回调,正如我在示例中所示,这是一个延续。啊,异步部分很好。我用JS SDK构建已经有一段时间了。删除了我的答案并认可了这个。好的,我似乎无法让它工作。我会使用
电子邮件=emailcheck(函数(email){alert(email);}
我仍然得到'undefined'@rickeymith-异步方法无法返回数据-它们必须接受回调,正如我在示例中所示,这是一个延续。