Ajaxで同期クラスの実装

  

もう1つの潜在的なソリューションXMLHttpRequestの同期バージョンを使用しています。ほとんどの部分については、私は、非同期モードを使用するがアクセス時に同期モードがより適切です。記事は、1から3アールでは、テストでは、Ajaxページは、コンテンツの読み込みが完了するまで継続することはできません例を示します。 、唯一のメソッドを呼び出す他のすべてが残るとしては適応する必要があるの非同期の同期バージョンを実装するには、例えば、同期モードを使用して、最初のクライアントコードを変換するには、次のコードを使用できます:

関数LoadAtomFeed()(ヴァール同期=新しい 同期(); synchronous.settings =(onComplete:(XMLHTTPを)(parseAtom()xmlhttp.responseXML; flexbox.update();))synchronous.get("/サービス/ブログ/エントリ/電流の関数");)

太字のコードのみに大きな変化を示しています:の代わりに非同期のインスタンス化するのは、同期をインスタンス化します。あなたはまだ設定のコードブロックを提供し、あなたはまだget関数を呼び出します。このアプローチの作品の方法は、同期および非同期一緒には、次のコードで示すように配線されためです理由:

関数を非同期(userSettings)(this.xmlhttp =新しいFactoryXMLHttpRequest(); this.isBusy =偽; 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;関数の同期(userSettings)(this.xmlhttp =新しいFactoryXMLHttpRequest(); this.isBusy =偽; 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 = 同期呼び出し;

太字のコードは、各クラスの1つの変更を示しています。注意してクラスを定義するこの方法は、契約書を使用します。各タイプの5つの関数:取得、入れているデル、ポスト、およびコール。 4つの関数は、デルに言えば、getとpostモジュールと見なされる可能性とは、mixinとして、それぞれ4つの機能のいくつかの方法で付加価値を考えたが、契約に依存している場所のタイプを呼び出すメソッドが含まれます。メソッドを呼び出すと、それぞれが独自の実装がどのような同期および非同期型で、さまざまに異なります。同期呼び出しの実装は以下のとおり。

 ソース: /クライアント/スクリプト/ jaxson / communications.js)(ヴァールインスタンス=は、(request.action、request.url、falseの場合、this.settings.username、this.settings.password)this.xmlhttp.open Synchronous_call(リクエスト機能; request.headersで(defHeader)(this.xmlhttp.setRequestHeader用(request.headers)((defHeader、request.headers [defHeader]);))の場合(this.settings.headers)(this.settingsで(defHeaderの場合。ヘッダー)(this.xmlhttp.setRequestHeader(defHeader、this.settings.headers [defHeader]);))((request.data)this.xmlhttp.send;場合(instance.settings.onComplete)(instance.settingsしてください。 (instance.xmlhttp);))をキャッチonComplete(電子)(globals.errorHandler(電子);))

あまり詳細に入ることがなければ、その実装は非常に似ていることがわかります。唯一の現実的な違いは、呼び出し元のsendメソッドを呼び出した後、onCompleteのコードブロックの非同期呼び出しを模倣onCompleteです。同期モードでは、後のメソッドは、XMLHttpRequestの送信状態が有効であり、onCompleteを呼び出すことは正しいです。

記事は、ソニアLandeを提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は、""Ajaxで同期クラスの実装の自動ソフトウェアによって翻訳された。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。


Online: 320 users browsing the articles directory