串行或并行调用多个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是处理这样的事情的好方法,其中下一个任务需要前一个任务的值(或者至少先完成先前的任务)。