写了一个方法,想获取用户的登录状态,
function(){
var is_login = 0;
$.getJSON(me.url.userUrl, { t: (new Date()) - 0 }, function(user) {
is_login = user.data.user.is_login;
});
return is_login;
}
但是每次返回的is_login都是0,但实际上ajax里获取的user.data.user.is_login为1.
想请教一下如何把user.data.user.is_login的值提出来。
AJAX
异步问题 不能这么写 因为数据提前返回了
你这个代码相当于这样
function isLogin(){
var is_login = 0;
setTimeout(function(){
// 网络延迟
is_login = 1;
}, 1000);
return is_login;
}
应该返回一个 promise
对象
function isLogin(){
return $.getJSON(me.url.userUrl, { t: (new Date()) - 0 });
}
// 调用
isLogin().then(function(user){
console.log(user.data.user.is_login);
});
$.when($.getJSON(me.url.userUrl, { t: (new Date()) - 0 }, function(user) {
is_login = user.data.user.is_login;
})).done(function(){
//console.log(arguments)
})