Que se passe-t-il si une fenêtre d’alerte est affichée lors d’un appel ajax?

Je me demandais simplement ce qui pourrait arriver si, pendant l’exécution d’un appel ajax, une alerte était envoyée à l’utilisateur dans la fenêtre du navigateur.

Disons, par exemple, que j’ai un appel ajax

$.ajax({ url: ..., type: GET/POST, ... success: function(data){ console.log(data); }, error: ... }); 

cela prend beaucoup de temps pour terminer (10 sec). Pendant que l’appel est exécuté, une alerte JavaScript simple est lancée

 alert("hello!"); 

Que se passe-t-il par exemple si:

  1. L’appel ajax commence
  2. ajax appel de récupération de données
  3. l’alerte est affichée
  4. L’appel ajax renvoie des données (la fenêtre d’alerte est toujours ouverte!)

Sachant que JS est mono-thread, je sais que l’exécution du script s’arrêtera, je me demandais ce qu’il advient de l’appel / réponse ajax si la fenêtre d’alerte n’est pas fermée “à temps”.

J’espère que j’ai été assez clair et que ce n’est pas une question “factice”. Je vous remercie

    Ce n’est pas tout à fait difficile d’essayer de voir … mais la réponse est que l’alerte sera prioritaire et retardera le déroulement de l’exécution.

    À la fermeture de l’alerte, et en supposant que la demande AJAX est terminée alors que l’alerte était ouverte, la fonction de success sera traitée (ou fonction d’ error ).

    Notez que la requête AJAX continuera à s’exécuter pendant que l’alerte est affichée (un AJAX de longue durée peut alors traiter lorsque l’alerte est ouverte), mais votre script ne peut continuer à gérer la requête tant que l’alerte n’est pas fermée.

    Voici un exemple pratique , notez que les données ne sont pas écrites sur la console tant que l’alerte n’est pas fermée.

    Un autre point à prendre en compte est qu’après la fermeture de l’alerte, le script continuera avec le rest de la fonction (le code immédiatement après l’ alert ) avant que la réponse AJAX ne soit traitée. Cela aide à démontrer ce que je veux dire

    La requête HTTP continuera à s’exécuter et sera traitée en arrière-plan.

    Lorsque la boucle d’événement JS devient libre, le gestionnaire readystatechange se déclenche.

    Certains états prêts intermédiaires peuvent être ignorés car la boucle d’événements était occupée alors que cet état était vrai.