串行和并行运行功能

时间:2013-03-05 09:33:54

标签: jquery ajax

我有3个功能: func1 func2 func3

func1 func2 使用load()动态获取内容。

func3 func2 加载的内容上运行,并在其上显示动画。

我希望 func1 func2 并行运行(以获得更好的性能)然后我希望 func3 在前两个完成后运行

var funcList = ['func1','func2'];
$.each(funcList, function(i,v){
        window[v]();
})
func3();

我注意到 func3()的动画可能无法运行,因为 func2 的内容尚未提取。一旦页面加载并且动画运行正常,我就从控制台运行 func3()。为什么会这样? Isnt each()是否同步?

1 个答案:

答案 0 :(得分:1)

这是因为$.ajax是异步的......在调用func3时,无法保证其他两个ajax调用已成功完成..您可以使用$.when检查返回的promise,一旦解析了两个函数,就运行第三个函数。

试试这个

$.when(funcList).then(func3) 

例如

var func1=function(){
  return $.get('url',function(data){....});
}

var func2=function(){
  return $.get('url2',function(data){....});
}

function func3(){
  // animation here
}

$.when(func1(),func2()).then(func3)