【发布时间】:2018-01-09 02:39:18
【问题描述】:
我有一个通过 ajax 获取数据并做某事的示例。条件是这个函数可以重复使用。可以在任何地方打电话。
<script type="text/javascript">
function getData(value1,value2){
$.ajax({
url: URL,
data:{
email:value1,
age:value2
},
async:false,
dataType: "json",
type: "get",
success: function(data){
var result;
result = data.result;
console.log("result:"+result);
},
error: function(){
}
});
};
var data;
data = getData("email","age");
console.log("data:"+data);
</script>
当我调用 ajax 时,结果稍后返回,因此数据为空。我尝试使用 async false 但在 ajax 内就可以了。
如何做javascript等待响应不再执行,获取响应然后继续执行。设置超时不是一个好主意,因为它会导致不同服务器上的服务器响应速度和服务器对不同客户端的响应速度问题。
【问题讨论】:
-
Syncrhonous XMLHttpRequest 在主线程上已被弃用,因为它对最终用户的体验产生不利影响 - 与其逃避异步代码,不如学习使用它。注意:在您的代码中,
getData不返回任何内容,这就是data未定义的原因 -
将
var result;移动到getData的顶部...在getData的底部添加return result; -
如果您想要一个包含 异步 请求的答案 - 请参阅 stackoverflow.com/questions/14220321/… - 看起来您最初尝试异步请求并诉诸同步,因为您无法获得异步上班
标签: javascript jquery ajax asynchronous synchronization