串行或并行调用多个ajax请求

我有3个function。

load_graphs('national','','container-natl-rates','container-natl-counts') load_graphs('division','Western','container-west-rates','container-west-counts') load_graphs('division','Eatern','container-east-rates','container-east-counts') 

load_graphs是一个执行ajax调用并创建图形的函数。

目前,此调用是异步完成的,但我希望在完成每个单独的调用后执行回调。

一种选择是使用如下的回调:

 function load_graphs(arg1, arg2, arg3, arg4, done) { // then do stuff and when that stuff is done // call your callback (in this case I named it "done") done(); } 

然后在你的方法调用中

 load_graphs('national','','container-natl-rates','container-natl-counts', function() { // first load_graphs() is complete load_graphs('division','Western','container-west-rates','container-west-counts', function() { // second load_graphs() is complete load_graphs('division','Eatern','container-east-rates','container-east-counts', function() { // third load_graphs() is complete }) }) }) 

还有其他更高级的选项,例如使用async或co等第三方工具

希望这可以帮助

如果您无法更改load_graphs并插入回调调用,则必须使用一些其他侦听器来指示load_graphs完成。

例如,您说该函数绘制了一个图形,因此您可以跟踪一些影响。 也许

更改其宽度,也许全局变量设置为当前时间戳值。 你应该抓住一些东西,它实际上取决于你没有提供的其余代码。

在第一次调用load_graphs之后,设置一个setInterval来连续检查这样的指示符,然后依次运行下一个load_graphs调用。

考虑使用promises。

使用promise是处理这样的事情的好方法,其中下一个任务需要前一个任务的值(或者至少先完成先前的任务)。

https://scotch.io/tutorials/javascript-promises-for-dummies