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

How can I make first Ajax Get request be finish before I call next one?

本文关键字:请求 第一个 Get Ajax 调用 下一个      更新时间:2023-09-26

我必须使用返回promise的方法。我想让第二个方法在第一个方法获取和操作数据之后执行。这个问题已经被问了好几次,但仍然找不到一种方法来解决它。这是我的代码:

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

您可以使用success调用来链接您的函数,如下所示:

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

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

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