加载异步javascript函数

时间:2014-02-25 10:45:29

标签: javascript extjs3

我有一个函数constGrid(arg1)被调用3次以在表单加载时构建extjs网格。我的页面还有其他字段。我真正想要的是如何调用constGrid方法,以便我的页面不会等待它们加载,并且在方法完成之前不会挂起。

onLoad(function() { for (var i=0; i<arg.length;i++) { constGrid(arg[i]); } .... })

但是当我在网页下面使用setTimeout时,尤其是IE挂起直到完成。

onLoad(function() { for (var i=0; i <argArr.length;i++) { (function(i) { setTimeout(constGrid(argArr[i])); })(i)); } .... })

你帮助实现这种异步将有很大帮助。感谢。

2 个答案:

答案 0 :(得分:0)

我不确定这在其他浏览器中是如何工作的。你需要传递给setTimeout的是一个函数。你实际传递的是一个函数的结果。

试试这个(虽然未经测试):

onLoad(function() { for (var i=0; i <argArr.length;i++) { setTimeout(constGrid.bind(window, argArr[i])); } .... })

这假设consGrid处于全局范围,似乎是。

答案 1 :(得分:0)

实际上你已经调用'constGrid'它应该作为参数传递给setTimeout。改为定义一个函数:

setTimeout(function() {constGrid(argArr[i]);}, 0);

(0 ms i.o立即执行,但异步)