Synkrone og asynkrone anmodninger

dec 22, 2021
admin

I nogle tilfælde skal du læse mange eksterne filer. Dette er en standardfunktion, som bruger XMLHttpRequest-objektet asynkront for at skifte indholdet af den læste fil til en specificeret lytter.

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);}

Brug:

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

Signaturen for hjælpefunktionen loadFile erklærer (i) en mål-URL, der skal læses (via en HTTP GET-anmodning), (ii) en funktion, der skal udføres ved vellykket afslutning af XHR-operationen, og (iii) en vilkårlig liste over yderligere argumenter, der sendes gennem XHR-objektet (via arguments-egenskaben) til callback-funktionen for succes.

Linje 1 deklarerer en funktion, der påkaldes, når XHR-operationen afsluttes med succes. Den påkalder til gengæld den callback-funktion, der er angivet i påkaldelsen af loadFile-funktionen (i dette tilfælde funktionen showMessage), som er blevet tildelt en egenskab ved XHR-objektet (linje 11). De yderligere argumenter (hvis der er nogen), der er leveret til påkaldelsen af funktionen loadFile, “anvendes” på kørslen af callback-funktionen.

Linje 5 erklærer en funktion, der påkaldes, når XHR-operationen ikke lykkes.

Linje 11 gemmer den succes-callback, der er givet som andet argument til loadFile, i XHR-objektets callback-egenskab.

Linje 12 skærer det array af argumenter, der er givet til påkaldelsen af loadFile, ud. Begyndende med det tredje argument indsamles alle resterende argumenter, tildeles arguments-egenskaben for variablen xhr, overføres til succes-callback-funktionen xhrSuccess. og leveres i sidste ende til callback-funktionen (i dette tilfælde showMessage), som påkaldes af funktion xhrSuccess.

Linje 15 angiver true for sin tredje parameter for at angive, at anmodningen skal håndteres asynkront.

Linje 16 iværksætter faktisk anmodningen.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.