在重dom操作期间,JQuery加载gif冻结

时间:2013-01-07 14:57:30

标签: javascript jquery loading gif

  

可能重复:
  How to make GIF rotate when the tree is loading in Javascript

就像标题所说,我的加载gif在通过ajax成功通话时冻结。 成功调用有一些繁重的DOM操作,并且由于UI是单线程的,它会导致我的加载gif冻结。

到目前为止,我一直试图

  1. 优化我的功能,但必须同时加载大量数据。
  2. 使用setTimeout(),但它会在加载完所有内容后显示所有GIF。
  3. 使用spin.js,但在DOM操作期间它也会冻结。
  4. 有没有办法解决这个问题?

    非常感谢任何帮助。


    编辑1:
    它与ArcGIS javascript有关,我必须从数据库中检索大约4000行,然后通过遍历所有点的for循环以正确的纬度和经度显示点。
    我正在尝试简单地概述一下this one

1 个答案:

答案 0 :(得分:4)

您必须模拟多线程才能让UI在处理AJAX响应时保持响应。

唯一的重要部分是安排处理功能,以便分割任务并按步骤执行。

您收到的数据是:

function ProcessData() {
    var done = false;        

    /*
        access the data here and perform a "bit" of data processing.

        if the task finishes set done to true
    */

    if(!done) {
        setTimeout(ProcessData, 100); // this gives the UI 0,1 secs
    }
}

当然上面的函数必须有一些方法来访问数据(使用全局或更好的,正确设置其上下文),注册操作的进度等等。

只是提出一个想法,但网上有很多详细解释。

或者你可能会得到一份" JavaScript忍者的秘密"并阅读章节"驯服线程和计时器"。

希望这有帮助。