Synkrona och asynkrona begäranden

dec 22, 2021
admin

I vissa fall måste du läsa många externa filer. Detta är en standardfunktion som använder XMLHttpRequest-objektet asynkront för att växla innehållet i den lästa filen till en angiven lyssnare.

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

Användning:

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

Signaturen för hjälpfunktionen loadFile deklarerar i) en mål-URL som ska läsas (via en HTTP GET-förfrågan), ii) en funktion som ska exekveras när XHR-operationen har slutförts med framgång, och iii) en godtycklig lista med ytterligare argument som skickas via XHR-objektet (via egenskapen arguments) till callbackfunktionen för framgång.

Linje 1 deklarerar en funktion som anropas när XHR-operationen avslutas framgångsrikt. Den åberopar i sin tur den callback-funktion som anges i åberopandet av loadFile-funktionen (i det här fallet funktionen showMessage) som har tilldelats en egenskap hos XHR-objektet (rad 11). De ytterligare argumenten (om några) som anges i anropet av funktionen loadFile ”appliceras” på körningen av callback-funktionen.

Linje 5 deklarerar en funktion som anropas när XHR-operationen misslyckas med att slutföras med framgång.

Linje 11 lagrar callback-funktionen för framgång som anges som det andra argumentet till loadFile i XHR-objektets callback-egenskap.

Linje 12 skär upp den argumentmatris som anges i anropet av loadFile. Från och med det tredje argumentet samlas alla återstående argument in, tilldelas arguments-egenskapen för variabeln xhr, överförs till callback-funktionen xhrSuccess för framgång och slutligen till callback-funktionen (i det här fallet showMessage) som åberopas av funktion xhrSuccess.

Linje 15 anger true för sin tredje parameter för att indikera att begäran ska hanteras asynkront.

Linje 16 initierar faktiskt begäran.

Lämna ett svar

Din e-postadress kommer inte publiceras.