如何/是否重写async:false AJAX函数?

时间:2015-12-29 19:42:25

标签: 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 },
      success: function(data) { returnData = data; },
      async:false
    });
    return returnData;
};

请注意,我已设置async:false,这在我的代码上下文中是必需的,并且运行良好。

在JQuery API上,为async上的条目提供了此消息:

  

从jQuery 1.8开始,使用async:false和jqXHR($ .Deferred)   弃用;您必须使用success / error / complete回调选项   而不是jqXHR对象的相应方法,如   jqXHR.done()或不推荐使用的jqXHR.success()。

我无法理解有关我的功能的警告,因为我没有在我的日常工作中使用$.Deferred;警告仍然可能以我不欣赏的方式适用。那么,按原样保留代码是否安全,或者是否应根据async的弃用进行重写,如果是,那么应该如何重写? (我需要同步执行的功能。)

非常感谢!

1 个答案:

答案 0 :(得分:-1)

您提供的代码看起来不错。以下是不推荐使用的版本(不要这样做):

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;
};