Ceci est un exemple simplifié, pour s'assurer qu'il n'y a pas de fonctions d'évanouissement/animation asynchrones impliquées.Veuillez attendre la superposition modale avant d'attendre une fonction avec une lourde charge de travail sans setTimeout()?
Je veux, que l'arrière-plan soit rouge lorsque la fonction avec la lourde charge de travail fonctionne et devient noir, quand il est prêt. Ce qui se passe réellement, c'est que la plupart du temps l'arrière-plan passera directement au noir, après que la fonction soit prête. Vous ne verrez pas de fond rouge, même si vous attendez que 'terminé' soit alerté.
Existe-t-il une meilleure solution, puis en quelques millisecondes avec setTimeout, de sorte que le changement d'arrière-plan passe au rouge. Appeler work() produit directement le problème.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Test</title>
<script type='text/javascript'>
function work()
{
var i, a;
a = [];
for(i = 0; i < 250000; i++)
{
a.push(Math.random());
}
a.sort();
document.getElementsByTagName('body')[0].style.background = '#000000';
alert('done');
return true;
}
window.onload = function() {
document.getElementsByTagName('body')[0].style.background = '#ff0000';
//work();
setTimeout(work, 100);
};
</script>
</head>
<body>
<h1>Test</h1>
</body>
</html>
'setTimeout 'fonctionne parfaitement dans ce cas. Y a-t-il une raison pour laquelle vous êtes opposé à l'utiliser? –