1

Javascript で実装された単純な MVC があります。ビューが行うことは 1 つだけです。マウス クリックの座標をキャプチャします。ユーザーがクリックするたびに、ビューは座標を FIFO バッファーに保存し、この新しいイベントについてコントローラーに通知します。通知の結果として、コントローラーは座標を読み取り、それらの座標に固有のデータについてモデルに問い合わせます。このデータは単純な数値です。

ただし、モデルには実際にはそのデータがありません。モデルは、リモート サーバーにその情報を要求します。情報が (非同期で) 到着すると、モデルは情報を永続的なバッファーに保存し、この新しい情報に基づいてビューを更新するコントローラーに通知します。

残念ながら、モデル内のバッファ全体を処理して、ビューを更新できるようにする必要があります (最後のデータだけに基づいてビューを更新することはできません)。ビューを更新するためにモデル内のバッファが読み取られている間に、新しいデータが非同期に到着するとどうなるでしょうか? 私が最初に考えたのは、ビューを更新するたびに、データベースの安定したコピー全体を 1 つ作成することでした。

4

1 に答える 1

1

JavaScript には、他の言語のような同等の「待機」がありません。将来的に役立つ「利回り」キーワードが表示されると思います。現時点では、多くのコーダーが Promises または Deferred パターンに依存しています。

jQuery には「Deferred」が組み込まれています。http://api.jquery.com/category/deferred-object/ Chrome と FF はそれを追加し始めました。https://code.google.com/p/v8/issues/detail?id=2355

これが最良の答えではないことを認めなければなりません。いくつかの小さな問題を指摘することしかできません。

  • jQuery ajax呼び出しは同期的に行うことができます.paramsを確認してください
  • タイムアウト、ブロックするため、スリープは答えではありません
  • 特に「then」、「when」コールバック手法が気に入らない場合は、遅延が常に答えとは限りません。
于 2013-09-24T09:03:03.050 に答える