【发布时间】:2016-03-15 08:29:18
【问题描述】:
我希望以下函数根据我的逻辑返回真或假,但函数返回未定义。
function getUserData() {
$.ajax({
type: 'POST',
contentType: 'application/json',
url: 'myservice',
dataType: "JSON",
success: function (data) {
if (data.d.UserID > 0) {
return true;
} else {
return false
}
return false;
},
error: function (error) {
return false;
}
});};
if (getUserData()) {
//do something
} else {
//redirect
}
请不要认为它是重复的,它是不同的,我不想返回回调函数我想根据那些回调函数返回true或false。
【问题讨论】:
-
请输入您从哪里获取数据的操作代码,或者至少向我们展示您从服务器获得的输出/响应。
-
服务器运行良好并返回我的数据,但我无法将这些 true 或 false 返回给 getUserData()
-
是的,你是对的。但我想在这个函数中决定我的逻辑,不想到处重复我的逻辑
-
它是异步的,因此根据定义,在完成之前您无法取回结果。这就是 重复问题 深入解释的内容:stackoverflow.com/a/14220323/2181514
-
不清楚为什么你认为你需要“在任何地方重复逻辑”——这就是回调函数的用途——你将逻辑函数传递给 ajax 包装器。此处在副本中进行了解释:“回调将引用我们在调用时传递给 foo 的函数,我们只需将其传递给成功”
标签: jquery ajax asynchronous promise