7

可能重复:
如何在 Javascript 中加载树时使 GIF 旋转

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

到目前为止,我已经尝试过

  1. 优化我的功能,但是要同时加载的数据太多了。
  2. 使用 setTimeout(),但它会在所有内容加载后显示所有 gif。
  3. 使用spin.js,但在 DOM 操作过程中它也会冻结。

有没有办法解决这个问题?

很感谢任何形式的帮助。


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

4

1 回答 1

4

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

唯一重要的部分是安排处理功能,使其任务可以分步执行。

当你得到你调用的数据时:

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 Ninja 的秘密”的副本并阅读“驯服线程和计时器”一章。

希望这可以帮助。

于 2013-01-07T16:44:13.903 回答