0

Dojo を使用して Web サービスへの呼び出しをキャンセルできるかどうかを知りたいです。私の問題は、たとえば、ユーザーがマップで選択する要素が多数あり、そのうちの 1 つをクリックするたびに、Web サービスへの呼び出しが実行されて重要な量のデータがもたらされることです。この操作には数秒のレイテンシーがかかります。ユーザーが 5 つの要素をほぼ同時にクリックするとします。選択された要素 (最後にクリックされた要素) がありますが、情報パネルは、最後の要素情報が読み込まれるまで、前にクリックされた要素の情報で定期的に更新されます。

私が望むのは、以前の呼び出しをすべてキャンセルし (可能であれば)、最後の呼び出しまで完了することだけを許可することです。私は道場で働いています。私はドキュメントを見てきましたが、有用なものは何も見ませんでした。「ajax.abort()」メソッドのようなものは、私が期待するものです。

また、呼び出しを管理するクラスを作成し、同じ URL へのすべての呼び出しをキューに追加して、最後の呼び出しのみがデータをレンダリングできるようにすることも考えましたが、この方法では、すべてのサービス呼び出しが完了するまで待つ必要があります。その後、結果を破棄します。進むべき適切な方法は、古い通話をキャンセルすることだと思います。

なにか提案を?ありがとう。

4

1 に答える 1

0

いくつかのフォーラムやページを検索した結果、www.mike-griffith.com - Cancel dojo XHR in progressが見つかりました。これはまさに私が探していたものです (Web の例では "GET" サービスに使用されていますが、"cancel()" メソッドは "POST" 呼び出しにも機能します)。

そのため、サービス コール マネージャーとこのコードを組み合わせて、同じ URL の呼び出しをキャンセルします。また、呼び出しがキャンセルされたときに発生したエラーを回避する方法を管理する必要があります (可能であれば) が、これは別のタスクであり、優先度ははるかに低くなります。

于 2013-01-04T12:02:17.997 に答える