Demandes synchrones et asynchrones

Déc 22, 2021
admin

Dans certains cas, vous devez lire de nombreux fichiers externes. Il s’agit d’une fonction standard qui utilise l’objet XMLHttpRequest de manière asynchrone afin de basculer le contenu du fichier lu vers un auditeur spécifié.

function xhrSuccess() { this.callback.apply(this, this.arguments);}function xhrError() { console.error(this.statusText);}function loadFile(url, callback /*, opt_arg1, opt_arg2, ... */) { var xhr = new XMLHttpRequest(); xhr.callback = callback; xhr.arguments = Array.prototype.slice.call(arguments, 2); xhr.onload = xhrSuccess; xhr.onerror = xhrError; xhr.open("GET", url, true); xhr.send(null);}

Utilisation:

function showMessage(message) { console.log(message + this.responseText);}loadFile("message.txt", showMessage, "New message!\n\n");

La signature de la fonction utilitaire loadFile déclare (i) une URL cible à lire (via une requête HTTP GET), (ii) une fonction à exécuter en cas de réussite de l’opération XHR, et (iii) une liste arbitraire d’arguments supplémentaires qui sont passés par l’objet XHR (via la propriété arguments) à la fonction de rappel de réussite.

La ligne 1 déclare une fonction invoquée lorsque l’opération XHR se termine avec succès. Elle invoque, à son tour, la fonction de rappel spécifiée dans l’invocation de la fonction loadFile (dans ce cas, la fonction showMessage) qui a été affectée à une propriété de l’objet XHR (ligne 11). Les arguments supplémentaires (s’il y en a) fournis à l’invocation de la fonction loadFile sont « appliqués » à l’exécution de la fonction de rappel.

La ligne 5 déclare une fonction invoquée lorsque l’opération XHR ne parvient pas à se terminer avec succès.

La ligne 11 stocke le rappel de réussite donné comme deuxième argument de loadFile dans la propriété callback de l’objet XHR.

La ligne 12 découpe le tableau d’arguments donné à l’invocation de loadFile. En commençant par le troisième argument, tous les arguments restants sont collectés, assignés à la propriété arguments de la variable xhr, passés à la fonction de rappel de succès xhrSuccess. et finalement fournis à la fonction de rappel (dans ce cas, showMessage) qui est invoquée par la fonction xhrSuccess.

La ligne 15 spécifie true pour son troisième paramètre pour indiquer que la requête doit être traitée de manière asynchrone.

La ligne 16 initie réellement la requête.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.