日期:2014-05-17  浏览次数:20398 次

jquery ajax 调用
function run() {
  $.ajax({
  type: "get",
  url: "/Authority/Import",
  cache: false,
  success: function (msg) {
  //获取要处理的数据总数
  total = parseInt(msg);

  //异步插入数据
  $.ajax({
  type: "get",
  url: "/Authority/Import3", //在后台sleep一分钟
  cache: false,
  success: function () { alert("/Authority/Import3"); }
  });

  //定时调用,返回插入条数
  setInterval(test, 100);
  }
  });
  }

function test() {
  $.ajax({
  type: "get",
  url: "/Authority/ImportInfo2",
  success: function (msg) { alert(msg);}
  });
  }
问题:
  “异步插入数据”与“定时调用,返回插入条数”两个代码块应该是异步执行,
但是现在“定时调用,返回插入条数”要等“异步插入数据”执行完成后才执行,求原因和解决办法。

------解决方案--------------------
虽然是异步执行,但是你放的位置不对,你现在的位置是,等
插入数据成功返回结果后才执行
//定时调用,返回插入条数
setInterval(test, 100);
这个方法放在外面

//异步插入数据
$.ajax({
type: "get",
url: "/Authority/Import3", //在后台sleep一分钟
cache: false,
success: function () { alert("/Authority/Import3"); }
});

}
});
}

//定时调用,返回插入条数
setInterval(test, 100);

------解决方案--------------------
你把定时器放到了第一个AJAX回调函数里执行了,当然变成同步了

JScript code

 $(document).ready(function() {
            setInterval(test, 100);
            setTimeout(run, 100);
        });