Cereri sincrone și asincrone

dec. 22, 2021
admin

În unele cazuri, trebuie să citiți mai multe fișiere externe. Aceasta este o funcție standard care utilizează obiectul XMLHttpRequest în mod asincron pentru a comuta conținutul fișierului citit către un ascultător specificat.

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

Utilizare:

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

Semnătura funcției utilitare loadFile declară (i) un URL țintă de citit (prin intermediul unei cereri HTTP GET), (ii) o funcție de executat la finalizarea cu succes a operațiunii XHR și (iii) o listă arbitrară de argumente suplimentare care sunt transmise prin intermediul obiectului XHR (prin intermediul proprietății arguments) către funcția de apelare a succesului.

Linia 1 declară o funcție invocată atunci când operațiunea XHR se finalizează cu succes. Aceasta, la rândul său, invocă funcția callback specificată în invocarea funcției loadFile (în acest caz, funcția showMessage) care a fost atribuită unei proprietăți a obiectului XHR (linia 11). Argumentele suplimentare (dacă există) furnizate la invocarea funcției loadFile sunt „aplicate” la rularea funcției de apelare.

Linia 5 declară o funcție invocată atunci când operația XHR nu reușește să se finalizeze cu succes.

Linia 11 stochează funcția de apelare a succesului dată ca al doilea argument pentru loadFile în proprietatea callback a obiectului XHR.

Linia 12 taie matricea de argumente dată la invocarea lui loadFile. Începând cu al treilea argument, toate argumentele rămase sunt colectate, atribuite proprietății arguments a variabilei xhr, transmise funcției de apelare a succesului xhrSuccess. și, în cele din urmă, furnizate funcției de apelare (în acest caz, showMessage) care este invocată de funcția xhrSuccess.

Linia 15 specifică true pentru cel de-al treilea parametru al său pentru a indica faptul că cererea ar trebui să fie tratată în mod asincron.

Linia 16 inițiază efectiv cererea.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.