Javascript 如何/是否重写async:false AJAX函数?
我使用带有Javascript 如何/是否重写async:false AJAX函数?,javascript,jquery,ajax,asynchronous,Javascript,Jquery,Ajax,Asynchronous,我使用带有async:false的AJAX调用返回数据,如下所示: var my_data = my_function(10, 20); function my_function(value1, value2) { var returnData; $.ajax({ type: 'POST', url: 'my_function.php', data: { variable1: value1, variable2: value2 },
async:false
的AJAX调用返回数据,如下所示:
var my_data = my_function(10, 20);
function my_function(value1, value2) {
var returnData;
$.ajax({
type: 'POST',
url: 'my_function.php',
data: { variable1: value1, variable2: value2 },
success: function(data) { returnData = data; },
async:false
});
return returnData;
};
请注意,我已经设置了async:false
,这在我的代码上下文中是必需的,并且可以完美地工作
但是,在JQuery API中,为异步上的条目提供了以下消息:
从jQuery1.8开始,在jqXHR($.Deferred)中使用async:false是不正确的
不赞成;您必须使用成功/错误/完成回调选项
而不是jqXHR对象的相应方法,例如
jqXHR.done()或不推荐使用的jqXHR.success()
我很难理解关于我的函数的警告,因为我没有在我的例程中使用$;这个警告可能在某种程度上仍然适用,我并不欣赏。那么,让代码保持原样是安全的吗?还是应该根据async
的反对意见重写代码?如果是,应该如何重写?(我需要同步执行该功能。)
非常感谢 您提供的代码看起来不错。以下是不推荐使用的版本(请勿执行此操作):
您提供的代码看起来不错。以下是不推荐使用的版本(请勿执行此操作):
为什么需要使用同步请求?如果希望继续使用同步请求,可以使用本机Js Ajax请求(使用XMLHttpRequest
),而不是jQuery的请求。它不仅在jQuery中不受欢迎,而且(在webworkers之外)。Chrome至少已经显示了警告,但不确定其他浏览器是否会显示警告。期望它在某个时候停止工作-我不会在任何新代码中使用它。如果您使用async:false作为确保ajax在执行其他操作之前完成的一种方法,那么您可能能够使用承诺来实现您的目标。我很惊讶没有人对这个问题提供有效的答案。问题很简单。为什么需要使用同步请求?如果希望继续使用同步请求,可以使用本机Js Ajax请求(使用XMLHttpRequest
),而不是jQuery的请求。它不仅在jQuery中不受欢迎,而且(在webworkers之外)也不受欢迎。Chrome至少已经显示了警告,但不确定其他浏览器是否会显示警告。期望它在某个时候停止工作-我不会在任何新代码中使用它。如果您使用async:false作为确保ajax在执行其他操作之前完成的一种方法,那么您可能能够使用承诺来实现您的目标。我很惊讶没有人对这个问题提供有效的答案。问题很简单。
var my_data = my_function(10, 20);
function my_function(value1, value2) {
var returnData;
$.ajax({
type: 'POST',
url: 'my_function.php',
data: { variable1: value1, variable2: value2 },
async:false
}).success(function(data) { returnData = data; });
return returnData;
};