0

在我遇到的这个很小的问题上,我花了 1.5 个小时来解决这个问题。情况:文件 A -> 请求文件 B,如果文件 B 返回 true,则用户已注册,不需要添加到我们的数据库中。如果为 false,则用户已登录 Facebook,但之前从未登录 -> 添加到数据库。

我的问题:FB.api() 由于异步调用而阻止我的函数返回 true。

function registered(){
                FB.api('/me', function(response) {
                    $.ajax({
                    async: true,
                    url: "facebook-sdk/src/check.php",
                    type: "POST",
                    data: {id: response.id},
                    success: function(data) {
                        if(data=='true'){
                            return true;
                        }else{
                            return false;
                        }
                    }
                    });
                });                    
}

我对函数的调用:

 if(registered())
    alert('true');
 else
    register();
4

1 回答 1

0

你可以改变如下:

function registered(callback){ //pass callback function as parameter
   FB.api('/me', function(response) {
       $.ajax({
          async: true,
          url: "facebook-sdk/src/check.php",
          type: "POST",
          data: {id: response.id},
          success: function(data) {
              callback(data);
          }
       });
    });                    
}
//call registered function
registered(function(response) { //callback function here
    if(response) { //if true is returned
      alert("Registered Already");
    }
    else {
      your_register_function();
    }
});
于 2013-10-07T09:02:12.703 回答