一尘不染

如何停止jQuery中的$ .post异步工作?

ajax

我有以下电话:

getData(0);
getData(1);
getData(2);

这些调用javascript函数:

function getData(Code) {
  $.post('/adminA/GetData',
                { Code: Code },
  function (data) {

问题是我的数据无法按顺序返回。有没有一种方法可以让我按顺序返回数据?


阅读 295

收藏
2020-07-26

共1个答案

一尘不染

同步调用这三个ajax请求将冻结浏览器。您最好使用jQuery的Deferred对象。试试这个:

function getData(Code) {
    return $.post('/adminA/GetData', { Code: Code }, function (data) {/*etc.*/});
}

getData(0).done(function() {
    getData(1).done(function() {
        getData(2);
   });
});

附录

您还应该考虑将调用合并为一个,并更改服务器逻辑以进行处理。最终,这将比三个请求更快:

function getData(firstCode, secondCode, thirdCode) {
    $.post('/adminA/GetData', {
        codeOne   : firstCode,
        codeTwo   : secondCode,
        codeThree : thirdCode
    }, function (data) {/*etc.*/});
2020-07-26