2013-07-26 1 views
0

je le code suivant:image Chargement en promesse jQuery se fige pendant navigateur est occupé

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

La fonction someMethod rend le navigateur tellement occupé qu'il gèle le gif de chargement. Y a-t-il un travail pour cela afin que mon gif de chargement se déplace pendant que le navigateur est occupé (note: impossible de cliquer sur quoi que ce soit car il est très occupé);

+0

'jQuery ('#' + loadAlert.id)' est redondant. faites juste 'jQuery (loadingAlert)' –

+0

Dans les navigateurs modernes, vous pouvez utiliser un webworker. –

+1

Vous devez nous montrer ce que 'someMethod' fait. – idbehold

Répondre

0

Dans les navigateurs modernes, vous pouvez utiliser un webworker. - Kevin B

J'ai utilisé le webworker pour résoudre ce problème, donc l'analyse lourde est en arrière-plan et ne gèle pas le navigateur.

Bien qu'il ne fonctionne pas dans IE9 et d'autres navigateurs mentionnés here, je viens de faire un travail autour:

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

ce qui signifie que si elle prend en charge la Webworker. Ceux qui ne supportent pas le webwork se bloque (toujours en utilisant mon ancien code), mais les versions du navigateur fonctionnent parfaitement.

0

Y at-il travail autour de cela pour que mes gif chargement se déplace alors que le navigateur est occupé

Non, vous devrez changer la fonction someMethod qui provoque le gel de devenir asynchrone et faire son travailler en plus petits morceaux.

Questions connexes