当我运行以下代码时,警报弹出窗口显示未定义.我认为它会返回true或false.请有人解释checkLoginStatus()函数如何执行.谢谢.
function checkLoginStatus() {
$.get("func.php", {op:'login_status', r:Math.random()}, function(data) {
if (data == "Yes") {
showSalesView();
return true;
} else {
loginView();
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
}
alert(checkLoginStatus());
Run Code Online (Sandbox Code Playgroud)
有几件事是错的.
一,你在函数中执行异步调用,所以当调用返回时,checkLoginStatus已经返回.它基本上是这样的:
function checkLoginStatus() {
$.get("func.php", {
op: 'login_status',
r: Math.random()
}, function(data) {
if (data == "Yes") {
showSalesView();
return true;
} else {
loginView();
return false;
}
});
// return undefined
}
Run Code Online (Sandbox Code Playgroud)
其次,您在另一个函数的回调中返回,因此返回会影响回调的返回值 $.get
你想使用回调.所以,
function checkLoginStatus(callback) {
$.get("func.php", {
op: 'login_status',
r: Math.random()
}, function(data) {
if (data == "Yes") {
showSalesView();
callback(true);
} else {
loginView();
callback(false);
}
});
}
Run Code Online (Sandbox Code Playgroud)
然后
checkLoginStatus(function(result) {
alert(result);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |