Die Umsetzung der Synchron-Klasse in Ajax
Eine andere mögliche Lösung besteht darin, die synchrone Version von XMLHttpRequest verwenden. In den meisten Fällen, ich asynchronen Modus, aber es gibt Zeiten, in denen Synchron-Modus ist besser geeignet. Artikel 1-3 zeigt ein Beispiel, in dem die Prüfung nicht, bis die Ajax-Seite geladen hat, deren Inhalt fortgesetzt werden kann. Um einen Synchron-Version von Asynchronous umzusetzen, nur die Call-Methode muss angepasst werden, alles andere kann bleiben wie es ist. Zum Beispiel auf die ursprüngliche Client-Code, um synchrone Modus zu konvertieren, können Sie den folgenden Code verwenden: Funktion LoadAtomFeed () (var = new synchronen Synchrone(); Synchronous.settings = (onComplete: function (xmlhttp) (parseAtom (XMLHTTP.responseXML); flexbox.update ();)) synchronous.get ( "/ services / blog / Einträge / current");) Der kühne Code zeigt die einzige wesentliche Änderung: Statt der Instanziierung Asynchron, es instanziiert Synchron. Sie haben noch einen Code-Block-Einstellungen, und immer noch erhalten, rufen Sie die Funktion. Der Grund dieser Ansatz funktioniert, ist darauf zurückzuführen, dass asynchrone und synchrone miteinander verkabelt sind, wie Sie den folgenden Code dargestellt: Asynchron-Funktion (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_callFunction Synchronous (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 = Synchroner Aufruf; Der kühne Code zeigt die einzige Änderung in jeder Klasse. Beachten Sie, dass diese Art der Definition einer Klasse einen Vertrag verwendet. Jeder Typ hat fünf Funktionen: get, put, del, Post, und rufen. Die vier Funktionen zu bekommen, put, del, und Post in Betracht gezogen werden ein Modul und dachte wie ein Mixin. Jeder der vier Funktionen einen zusätzlichen Nutzen in irgendeiner Weise, sondern stützt sich auf einen Vertrag, falls das ein Call-Methode enthält. Die Call-Methode ist es, was je auf dem Asynchron-und Synchron-Typen, von denen jeder einen einzigartigen Umsetzung hat. Die synchronen Aufruf Umsetzung ist wie folgt. Quelle: / client / scripts / Jaxson / communications.js Funktion Synchronous_call (request) (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 . Header) (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);)) Ohne allzu sehr ins Detail können Sie sehen, dass die Implementierung sehr ähnlich sind. Der einzige wirkliche Unterschied ist, dass der Aufruf onComplete nach dem Aufruf der Methode send imitiert den asynchronen Aufruf der onComplete Code-Block. Im synchronen Modus, nach dem Versenden Methode gibt, den Zustand der XMLHttpRequest gültig ist und mit der Aufforderung onComplete korrekt ist. Ein Artikel eingereicht von Sonja Lande Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle. Wichtig: Dieser Artikel "Umsetzung des Synchron-Klasse in Ajax" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.
|
|||||
| Online: 429 users browsing the articles directory |
|
|