Question

j'ai le script suivant :

posting();      
pause(time);    
postSent(postUrl, fields);

function postSent(postUrl, fields)
{
  $.ajax( {                                    
  url : postUrl,
  type : "POST",
  data : fields,
  cache : false,
  error : function(xhr, textStatus, errorThrown) {
        var answer = xhr.responseText;         
    answer = answer.split(":");
    answer = answer[0].replace(/}/g,"").replace(/{/g,"").replace(/"/g,"");
    if (answer == "id")
    {
            isPostSent = true;              
    }
    else
    {
        isPostSent = false;         
    }         

    }        
   }); 
}

function pause(milliseconds) {
var dt = new Date();
while ((new Date()) - dt <= milliseconds) { /* Do nothing */ }
}

function posting()
{
var table = ''; 
table += '<table border="0" rules="none" cellpadding="5" style="z-index:+10; position:fixed; top:35%; left:35%; box-shadow:  0px 0px 5px 5px #888888;" rules="none" border="0" bgcolor="#edeff4">';
table += '<td align="center">';
table += '<img src="images/loading.gif" id="post_status_image">';
table += '</td>';
table += '<tr >';
table += '<td align="center">שולח הודעה, אנא המתן...</td>';
table += '</tr>';
table += '<tr>';
table += '<td align="center" id="post_status"></td>';
table += '</tr>';
table += '<tr >';
table += '<td align="center" ><img id="post_close" src="images/close1.png" onclick="closePop()" style="visibility:hidden;"></td>';
table += '</tr>';
table += '</table>';
document.getElementById('post').innerHTML = table;  
 }

le temps est réglé sur 3000 millisecondes.mon problème est que je veux que la fonction posting() affiche le tableau à l'écran (c'est une sorte d'écran de "chargement"), puis met le script en pause.en fait, pour une raison quelconque, le script s'arrête d'abord, et seulement une fois terminé, il me montre l'écran de chargement...comment ça se fait ?

Était-ce utile?

La solution

Les navigateurs exécutent JavaScript et restituent le tout sur un seul thread.Ainsi, vos trois fonctions JS se termineront avant que la page ne soit mise à jour.C'est pourquoi vous devriez jamais implémentez une fonction de pause dans JS basée sur une boucle while et vérifiant l'heure.Au lieu de cela, vous devez utiliser setTimeout() et mettez tout code qui doit s'exécuter après la pause dans le rappel auquel vous transmettez setTimeout().

En utilisant votre exemple de code :

posting();
setTimeout(function() {
    postSent(postUrl, fields);
}, 3000);

Autres conseils

Il n'y a pas de fonction de sommeil ou de pause dans JavaScript natif.Mais nous pouvons atteindre comme ça.

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

J'ai créé Fiddle à: http://jsfiddle.net/6dqbp/

script pris de: http://www.phpied.com/sleep-in-JavaScript /

J'ai trouvé cette URL après avoir répondu.Pourrait être utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top