繁体   English   中英

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

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

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

 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调用始终是异步调用。 这就像火灾和忘记。 它不会等到执行完成。 为了使您的代码工作,您需要在第一个方法返回时调用第二个方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM