Implementando a Classe Síncrona em Ajax
Outra possível solução é usar a versão síncrona de XMLHttpRequest. Para a maior parte, eu uso o modo assíncrono, mas há momentos em modo síncrono é mais adequado. 1-3 artigo apresenta um exemplo em que o teste não pode continuar até que a página Ajax terminar de carregar o seu conteúdo. Para implementar uma versão do Synchronous Asynchronous, apenas o método de chamada deve ser adaptado tudo pode ficar como está. Por exemplo, para converter o código de cliente inicial para usar o modo síncrono, você pode usar o seguinte código: LoadAtomFeed function () (var = new síncrona Synchronous(); Synchronous.settings = (onComplete: function (xmlhttp) (parseAtom (xmlhttp.responseXML); flexbox.update ();)) synchronous.get ( "/ serviços / blog / entradas / current");) O código em negrito mostra a única grande mudança: ao invés de instanciar Asynchronous, Synchronous ele instancia. Você ainda fornecer um bloco de código configurações, e você ainda chamada a função get. A razão que esta abordagem funciona é devido à forma síncrona e assíncrona, que estão ligados entre si, como ilustra o seguinte código: Asynchronous função (userSettings) (this.xmlhttp FactoryXMLHttpRequest = new (); this.isBusy = false; this.userSettings = userSettings;) Asynchronous.prototype.get = HttpRequest_get; Asynchronous.prototype.put = HttpRequest_put; Asynchronous.prototype.del = HttpRequest_delete; Asynchronous.prototype.post = HttpRequest_post; Asynchronous.prototype.call = Asynchronous_call; Função síncrona (userSettings) (this.xmlhttp FactoryXMLHttpRequest = new (); this.isBusy = false; this.userSettings = userSettings;) Synchronous.prototype.get = HttpRequest_get; Synchronous.prototype.put = HttpRequest_put; Synchronous.prototype.del = HttpRequest_delete; Synchronous.prototype.post = HttpRequest_post; Synchronous.prototype.call = Chamada síncrona; O código em negrito mostra a única mudança em cada classe. Observe que esta forma de definir uma classe usa um contrato. Cada tipo tem cinco funções: get, put, del, correio, e chamada. As quatro funções GET, PUT, del, e depois poderia ser considerado um módulo e pensado como um mixin. Cada uma das quatro funções agrega valor de alguma forma, mas depende de um contrato em que o tipo contém um método chamado. A chamada de método é o que varia de acordo com os tipos síncrona e assíncrona, como cada um tem uma aplicação única. A aplicação chamada síncrona é a seguinte. Fonte: / cliente / scripts / Jaxson / communications.js função Synchronous_call pedido () (var instance = this; this.xmlhttp.open (request.action, request.url, false, this.settings.username, this.settings.password); if (Request.Headers) (for (defHeader em Request.Headers) (this.xmlhttp.setRequestHeader (defHeader, Request.Headers [defHeader]);)) if (this.settings.headers) (for (defHeader em this.settings . headers) (this.xmlhttp.setRequestHeader (defHeader, this.settings.headers [defHeader]);)) try (this.xmlhttp.send (request.data); if (instance.settings.onComplete) (instance.settings. onComplete (instance.xmlhttp);)) catch (e) (globals.errorHandler (e);)) Sem entrar em muitos detalhes, você pode ver que as implementações são muito semelhantes. A única diferença real é que chamar onComplete após chamar o método enviar imita a chamada assíncrona do bloco de código onComplete. No modo síncrono, após enviar o método retorna, o estado de XMLHttpRequest é válido e chamando onComplete está correto. um artigo submetido por Sonja Lande Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre. Importante: Este artigo "Implementação da Classe Síncrona em Ajax" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.
|
|||||
| Online: 322 users browsing the articles directory |
|
|