Requisições síncronas e assíncronas

Dez 22, 2021
admin

Em alguns casos, você deve ler muitos arquivos externos. Esta é uma função padrão que usa o objeto XMLHttpRequestassíncrono para mudar o conteúdo do arquivo lido para um ouvinte especificado.

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

Usage:

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

A assinatura da função utilitário loadFile declara (i) uma URL de destino a ler (via uma requisição HTTP GET), (ii) uma função a executar após a conclusão bem sucedida da operação XHR, e (iii) uma lista arbitrária de argumentos adicionais que são passados através do objeto XHR (via a propriedade arguments) para a função callback de sucesso.

Linha 1 declara uma função invocada quando a operação do XHR é concluída com sucesso. Ela, por sua vez, invoca a função callback especificada na invocação da função loadFile (neste caso, a função showMessage) que foi atribuída a uma propriedade do objeto XHR (Linha 11). Os argumentos adicionais (se houver) fornecidos para a invocação da função loadFile são “aplicados” à execução da função callback.

Linha 5 declara uma função invocada quando a operação do XHR falha em completar com sucesso.

Linha 11 armazena o callback de sucesso dado como segundo argumento para loadFile no objeto XHR callback propriedade.

Linha 12 corta o array de argumentos dado para a invocação de loadFile. A partir do terceiro argumento, todos os argumentos restantes são recolhidos, atribuídos à propriedade argumentos da variável xhr, passados à função de retorno de chamada de sucesso xhrSuccess, e finalmente fornecidos à função de retorno de chamada (neste caso, showMessage) que é invocada pela função xhrSuccess.

Linha 15 especifica verdadeiro para o seu terceiro parâmetro para indicar que a requisição deve ser tratada assincronamente.

Linha 16 realmente inicia a requisição.

Deixe uma resposta

O seu endereço de email não será publicado.