在浏览器繁忙时,jQuery promise中的加载图像会冻结

时间:2013-07-26 03:34:07

标签: jquery loading promise busyindicator

我有以下代码:

var self = this;
jQuery('#' + loadingAlert.id).promise()
          .done(() => self.showProgress())
          .done(window.setTimeout(() => self.someMethod(), 100));
          .done(() => self.hideProgress());

someMethod函数使浏览器忙于冻结加载gif。有没有解决这个问题,以便我的加载gif在浏览器繁忙时移动(注意:因为它非常繁忙所以无法点击任何东西);

2 个答案:

答案 0 :(得分:0)

  

是否有任何解决方法可以让我的加载gif在浏览器忙碌时移动

没有。您将不得不更改导致冻结变为异步的someMethod函数,并以较小的块进行工作。

答案 1 :(得分:0)

  

在现代浏览器中,您可以使用网络工作者。 - 凯文B

我使用webworker来解决这个问题,所以重度解析在后台并且不会冻结浏览器。

虽然它在IE9和其他提及here的浏览器中不起作用,但我刚刚解决了这个问题:

if (window['Worker']) { ... }

这意味着它是否支持webworker。那些不支持webworker的人会挂起(仍然使用我的旧代码),但浏览器版本可以完美运行。