我有3个功能。
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调用并创建图形的函数。
目前,此调用是异步完成的,但我希望在完成每个单独的调用后执行回调。
答案 0 :(得分:0)
一种选择是使用如下的回调:
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
希望这有帮助
答案 1 :(得分:0)
如果您无法更改load_graphs
并插入回拨电话,则必须使用其他一些指示load_graphs
完成时间的侦听器。
例如,您说该函数绘制了一个图形,因此您可以跟踪一些影响。也许<div>
更改其宽度,也许全局变量设置为当前时间戳值。你应该抓住一些东西,它实际上取决于你没有提供的其余代码。
在第一次load_graphs
来电之后,设置setInterval
以持续检查此类指标,然后依次运行下一个load_graphs
来电。
答案 2 :(得分:0)
考虑使用promises。
使用promise是处理此类事情的好方法,其中下一个任务需要前一个任务的值(或者至少先完成上一个任务)。