我正在为我的fb应用程序起诉javascript sdk。
我面临的问题是我无法将用户信息保存在变量中,而是在我需要的应用程序中使用它。
这是我的代码:
<script>
var userfb;
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
FB.api('/me', function(response) {
userfb = response;
console.log (userfb);
});
}
});
$(document).ready(function() {
$('.firstname input').val(userfb.first_name);
});
</script>
这会将userfb.first_name作为undefined返回,因为FB.api还没有完成,但是如果我写这样的最后一行,一切正常。
setTimeout(function(){$('.firstname input').val(userfb.first_name);}, 3000);
任何人都知道如何在不使用setTimout的情况下从应用程序的任何位置访问userfb?
答案 0 :(得分:0)
你需要思考异步:
<script>
var userfb;
$(document).ready(function() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
FB.api('/me', function(response) {
userfb = response;
$('.firstname input').val(userfb.first_name);
});
}
});
});
</script>
具有功能的另一种解决方案:
<script>
var userfb;
function onConnected() {
$('.firstname input').val(userfb.first_name);
}
$(document).ready(function() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
FB.api('/me', function(response) {
userfb = response;
onConnected();
});
}
});
});
</script>
当然你也可以摆脱全局变量并使用函数参数。