1

PureMVC を使用して Adob​​e AIR アプリケーションを作成しています。

ページベースのアプリケーション ビュー ( ViewStack を使用) があり、ユーザーが何らかの方法でこのページを移動しているとします (ボタンをクリックするなど)。

たとえば、インスタンス化または表示されたときに WebService からデータをロードする必要があるアカウント情報ページがあります (たとえば、emailアカウント残高、およびユーザー名)。データが返されたら、アカウント情報ページに表示したいと思います適切なラベル。

問題は、この 3 つの Web 呼び出しを実行すると、それぞれが異なる時間に異なる resultEvent を返すことです。すべてのサービス呼び出しが結果を返したという情報を取得する最良の方法は何だろうと思っているので、最終的にすべての結果を一度に表示できることを知っています (そして、これが発生する前に読み込み画面を再生する可能性があります)。

4

2 に答える 2

0

私はこのようにします:

  1. 3 つの情報エンティティ (EMailProxy、BalanceProxy、UsernameProxy) のそれぞれに対してプロキシを作成します。
  2. WebService との対話を処理するデリゲート クラスを作成します (「public class WSConnector implements IResponder{...}」のようなもの)。これは、プロキシがエンド ws-methods を呼び出すために使用されます。
  3. 3 つの結果すべてを調整するプロキシ (CoordProxy) を作成します。
  4. 3 つの呼び出しすべてを調整するメディエーターを選択します (たとえば、ApplicationMediator によって実行できます)。
  5. すべてのプロキシ結果 (GET_EMAIL_RESULT、GET_BALANCE_RESULT、GET_USERNAME_RESULT、COORD_RESULT) の通知定数を作成します。
  6. ApplicationMediator に 4 つの通知すべてを取得させます。

    • 3 つの結果すべてを待つだけでなく、いくつかのエラーとその解釈に備えておくことが重要です。そのため、単純なカウンターでは弱すぎる可能性があります。

全体的なワークフローは次のようになります。

  1. ユーザーがプロセスを開始します。
  2. 一部のメディエーターは、GUI コンポーネントからイベントを取得し、DO_TRIPLECALL などの通知を送信します。
  3. ApplicationMediator はこの通知をキャッチし、CoordProxy の状態をド​​ロップして、プロキシから 3 つのメソッド (getEMail、getBalance、getUsername) をすべて呼び出します。
  4. 応答は非同期で送信されます。各プロキシは、デリゲートから応答を取得し、独自のデータ オブジェクトを変更して、適切な通知を送信します。
  5. ApplicationMediator はこれらの通知をキャッチし、CoordProxy の状態を変更します。3 つの応答がすべて存在する場合 (すべてが成功するとは限りません)、CoordProxy は全体的な結果を含む通知を送信します。

メディエーターを介してこのようなやり取りを行うのが最善の方法ではないことはわかっています。最初のアイデアは、すべての「ビジネス ロジック」の決定にコマンドを使用することでした。しかし、官僚機構を作るのは退屈すぎるかもしれません。

お役に立てば幸いです。あなたの解決策を知り、ここで話し合っていただければ幸いです。

于 2013-08-01T08:40:17.860 に答える