在调用下一个之前,如何才能完成第一个Ajax Get请求?

时间:2016-05-02 13:55:08

标签: javascript jquery ajax

我必须返回承诺的方法。 我想在第一个获取和操作数据后执行第二个方法。 这个问题已被多次询问,仍然无法找到使其工作的方法。 这是我的代码:



self.getSpesialitet = function () {

            console.log("Starting Spesialitet");

            return $.get(options.getSpesialitetUrl, { 'recno': recno }, function (data) {
                
                ////Code

                console.log("Success Spesialitet");
            });
        };

self.getVedtak = function () {

            console.log("Starting Vedtak");

            return $.get(options.getVedtakUrl, { 'recno': recno }, function (data) {
                
                ////Code

                console.log("Success Vedtak");
            });
        };

$.when(self.getSpesialitet()).then(self.getVedtak()).then(console.log("Everything is done"));




这是我得到的结果:

Starting Vedtak
Starting Spesialitet
Everything is done
Success Vedtak
Success Spesialitet

我想得到的结果:

Starting Vedtak
Success Vedtak
Starting Spesialitet
Success Spesialitet
Everything is done

2 个答案:

答案 0 :(得分:1)

您可以使用success来调用函数,例如:

self.getVedtak().success(function(){ 
  self.getSpesialitet().success(function(){ 
    console.log('Everything is done'); 
  }) 
})

工作小提琴:https://jsfiddle.net/robertrozas/sjg44pz2/1/

答案 1 :(得分:0)

请理解ValidationError$.get$.post调用始终是异步调用。这就像火和忘记。它不会等到执行完成。为了使代码有效,您需要在第一个方法返回时调用第二个方法。