Attuazione della classe sincrono in Ajax
Un'altra possibile soluzione è quella di utilizzare la versione sincrona di XMLHttpRequest. Per la maggior parte dei casi, utilizzare la modalità asincrona, ma ci sono momenti in modalità sincrona è più appropriato. 1-3 articolo presenta un esempio in cui la prova non può continuare fino a quando la pagina Ajax ha terminato il caricamento del suo contenuto. Per implementare una versione sincrona di asincrona, solo la chiamata al metodo deve essere adattato tutto il resto può rimanere come è. Ad esempio, per convertire il codice iniziale del client per utilizzare la modalità sincrona, è possibile utilizzare il seguente codice: LoadAtomFeed function () (var sincrono = new Sincrono(); Synchronous.settings = (onComplete: function (xmlhttp) (parseAtom (xmlhttp.responseXML); flexbox.update ();)) synchronous.get ( "/ servizi / entries / blog / corrente");) Il codice in grassetto mostra l'unico cambiamento importante: invece di un'istanza asincrona, si istanzia sincrono. Si continuano ad offrire un blocco di impostazioni del codice, e si continuano a chiamare la funzione get. Il motivo che questo approccio funziona è dovuto al modo in cui sincroni ed asincroni sono collegati tra loro, come illustrato dal codice seguente: asincrono function (UserSettings) (this.xmlhttp = new FactoryXMLHttpRequest (); 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; Funzione sincrona (UserSettings) (this.xmlhttp = new FactoryXMLHttpRequest (); 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 = Sincrono chiamata; Il codice in grassetto mostra il cambiamento unico per ogni classe. Si noti che questo modo di definire una classe utilizza un contratto. Ogni tipo ha cinque funzioni: GET, PUT, del post, e chiamare. Le quattro funzioni get, put, del, e post potrebbe essere considerato un modulo e pensato come un mixin. Ognuna delle quattro funzioni aggiunge valore in qualche modo, ma si basa su un contratto in cui il tipo contiene un metodo di chiamata. La chiamata al metodo è quello che varia dal tipo asincrona e sincrona, in quanto ciascuno ha una realizzazione unica. L'attuazione sincrono chiamata è la seguente. Fonte: / client / scripts / jaxson / communications.js funzione Synchronous_call (richiesta) (var instance = this; this.xmlhttp.open (request.action, request.url, false, this.settings.username, this.settings.password); if (request.headers) (for (defHeader in request.headers) (this.xmlhttp.setRequestHeader (defHeader, request.headers [defHeader]);)) if (this.settings.headers) (for (defHeader in 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);)) Senza entrare troppo nel dettaglio, si può vedere che le implementazioni sono molto simili. L'unica vera differenza è che chiamando onComplete dopo la chiamata al metodo Send imita la chiamata asincrona del blocco onComplete codice. In modalità sincrona, dopo che il metodo Send restituisce, lo stato di XMLHttpRequest è valido e chiamando onComplete è corretta. un articolo presentato da Sonja Lande Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni. Importante: Questo articolo "Attuazione della classe sincrono in Ajax" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.
|
|||||
| Online: 214 users browsing the articles directory |
|
|