2009-03-09 10 views
0

私はAJAX介して2つの別々のチェックを実行しているJavaScriptアプリケーションに取り組んでいます。各チェックの結果によって、動作が異なります。私がここに興味を持っているのは、両方のチェックが成功したときです。私はこれを行うためのいくつかの方法を特定しました。そして、私はSOから、彼らが最善のアプローチであると考えるものについていくつかのフィードバックを得たいと思います。YUIカスタムイベントとsimutaneousアクション

  1. 同期AJAX呼び出し:これは私が継承したものであり、終了しました。ブラウザとシステムのロックアップを引き起こしますが、単一の実行スレッドで応答の処理を続けることができます。
  2. デイジーチェーン接続:最初のチェックを実行するためにAJAX呼び出しを行い、それが通過した場合、最初のチェックのコールバックで第2のチェックを行います。 2番目のチェックを処理し、成功すれば成功です。これは最も簡単な解決策ですが、私は2つの小切手を不必要にカップルすることになります。小切手のシリアル化が不要で、パフォーマンスが低下するような気もします。
  3. カスタムイベント:AJAXは同時に呼び出すの両方をオフに解雇、YUIのEventモジュールとカスタムイベントのユーティリティを使用します。成功事例ごとにカスタムイベントを作成し、AJAXレスポンスを処理するコールバックに成功のチェックごとに適切なイベントをスローします。各イベントのハンドラは、他のイベントにサブスクライブすることができます。スローされた場合、正常に完了しました。

私の質問は、私は賛成です第三のアプローチに関する。私は、ハンドラがイベントだけで接続され、AJAXコールは同時に発生することが好きです。私が知りたいことは、他の誰かがこの方法でこのモジュールを使用したことですか?どのような落とし穴が予想されますか?私は競争状態のために自分自身を設定しているかもしれないと心配 - どのように私はこれを軽減することができますか?そして最後に、これまでにこれを読んだ人には、より良い方法がありますか?私のリストは網羅的ではありませんか、または根本的に欠陥がありますか?建設的な批判やコメントは歓迎する以上のものです。

編集:サーバーのリクエストはセッションを使用しますが、それらは互いに無関係でセッションデータを書きませんので、サーバーでパラレルに実行される理由はありません(PHPセッションには制限がありません。知りません)。サーバー側のチェックも行っていますが、特定の重要なイベントが発生する前に、直前にサーバーに確認して、まれなイベントでユーザーに何か変更があったことを知らせる必要があります。

答えて

0

あなたは、サーバー側が持っているもの状態ではないのですか?個人的に私はいくつかの実用的理由のためにオプション2を好む。

  1. クロスブラウザとは、IEとIEをサポートするという意味で、2つの未処理の要求をサーバーに許可します。私はこれらの両方をこの方法で使用することは避けてしまいます。これは、ブラウザーの明らかなロックにつながりますが、同期要求を使用するほど重大ではありませんが、それでもかなり悪いことです。

  2. このような要求は、何らかの種類のセッションを使用するサーバサイドコードを実行することが多く、その順番に処理への要求を制限する傾向があります。したがって、望ましいパフォーマンスの向上は実現しません。

あなたは、必要に応じて別のチェーン化することがデカップリングする必要があり、具体的理由を十分に知っていることと、そのデザインの一部であるようなものをコーディングする場合、その要件は、それらの間の結合を作成しているので、両方の結果を必要としています。

+0

私はあなたの質問/答えを言っていたので、私は私の元の質問に編集して、それが含まれています。 –