2016-02-18 2 views
2

J'ai ce morceau de coderappel d'un événement OnBeforeUnload pas exécuté completly

window.onbeforeunload = function (evt) { 
     //angular $http object 
     Rest.putInteraction({id:1}).then(function(){ 
      //authorize the event to close window 
     });   
    }; 

Javascript bien sûr ne pas attendre l'appel de repos pour commencer, et il suffit de laisser la décharge de page à la fin de la fonction de rappel; donc je ne peux pas faire la demande dont j'ai besoin avant que la page ne soit déchargée.

Y at-il un moyen de mettre en pause le rappel d'événement et d'attendre que le reste promise pour résoudre?

+0

Pouvez-vous s'il vous plaît créer un [jsFiddle] (https://jsfiddle.net) avec votre code et la question pertinente? – Noy

+1

Utiliser une requête synchrone à la place – Nadir

+0

Comme la documentation [onbeforeunload] (https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload), la seule chose que vous pouvez faire est de montrer une confirmation message; vérifiez aussi http://stackoverflow.com/questions/821011/how-do-you-prevent-a-webpage-from-navigating-away-in-javascript – beaver

Répondre

0

attendre jusqu'à ce que l'appel a été satisfait à la seule façon que je trouve est de faire un appel synchrone:

window.onbeforeunload = function (evt) { 
    //jQuery Ajax 
    $.ajax({ 
      async: false, 
      method: "GET", 
      url: "http://www.google.it" 
    }); 
    //here only after everything are done! 
};