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);}
        });
    }
问题:
    “异步插入数据”与“定时调用,返回插入条数”两个代码块应该是异步执行,
但是现在“定时调用,返回插入条数”要等“异步插入数据”执行完成后才执行,求原因和解决办法。

解决方案 »

  1.   

    虽然是异步执行,但是你放的位置不对,你现在的位置是,等
    插入数据成功返回结果后才执行
    //定时调用,返回插入条数
      setInterval(test, 100);
    这个方法放在外面//异步插入数据
      $.ajax({
      type: "get",
      url: "/Authority/Import3", //在后台sleep一分钟
      cache: false,
      success: function () { alert("/Authority/Import3"); }
      });    }
      });
      }//定时调用,返回插入条数
      setInterval(test, 100);
      

  2.   

    ajax一个参数  async: false, //同步   不写的情况下 默认为true。
    如果为false的话 他就会执行完然后才继续执行
      

  3.   

    你把定时器放到了第一个AJAX回调函数里执行了,当然变成同步了
     $(document).ready(function() {
                setInterval(test, 100);
                setTimeout(run, 100);
            });
    分别调用就好了