Richieste sincrone e asincrone

Dic 22, 2021
admin

In alcuni casi, è necessario leggere molti file esterni. Questa è una funzione standard che utilizza l’oggetto XMLHttpRequest in modo asincrono per passare il contenuto del file letto a un ascoltatore specificato.

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

Uso:

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

La firma della funzione di utilità loadFile dichiara (i) un URL di destinazione da leggere (tramite una richiesta HTTP GET), (ii) una funzione da eseguire al completamento con successo dell’operazione XHR, e (iii) una lista arbitraria di argomenti aggiuntivi che vengono passati attraverso l’oggetto XHR (tramite la proprietà arguments) alla funzione di callback di successo.

La linea 1 dichiara una funzione invocata quando l’operazione XHR si completa con successo. Essa, a sua volta, invoca la funzione di callback specificata nell’invocazione della funzione loadFile (in questo caso, la funzione showMessage) che è stata assegnata a una proprietà dell’oggetto XHR (riga 11). Gli eventuali argomenti aggiuntivi forniti all’invocazione della funzione loadFile sono “applicati” all’esecuzione della funzione di callback.

La linea 5 dichiara una funzione invocata quando l’operazione XHR non riesce a completarsi con successo.

La linea 11 memorizza il callback di successo dato come secondo argomento a loadFile nella proprietà callback dell’oggetto XHR.

La linea 12 taglia l’array di argomenti dato all’invocazione di loadFile. A partire dal terzo argomento, tutti gli argomenti rimanenti sono raccolti, assegnati alla proprietà arguments della variabile xhr, passati alla funzione di callback di successo xhrSuccess, e infine forniti alla funzione di callback (in questo caso, showMessage) che è invocata dalla funzione xhrSuccess.

La linea 15 specifica true per il suo terzo parametro per indicare che la richiesta dovrebbe essere gestita in modo asincrono.

La linea 16 avvia effettivamente la richiesta.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.