2

私の HTML5 アプリケーションは、Web ワーカーを使用して、キャンバス コンテキストから画像のピクセル データを分析します。ワーカーがデータを分析すると、サーバーに 3 回の XHR 呼び出しを行い、モデルを更新します。アプリケーションをテストしていたとき、試行したとおりに多くのワーカーを起動して実行することができました。各ワーカーは、サーバーへの XHR コールバックを 1 回しか行いませんでした。すべてがうまくいきました。

1 つのワーカーから 3 つの非同期呼び出しを実行しようとすると、問題が発生します。Chrome の開発者ツールを見ると、3 つの呼び出しがすべて発生することがわかりますが、最後の呼び出しを除いてすべてキャンセルされます。これは、一部またはすべての呼び出しを非同期にするかどうかに関係なく発生します。ただし、タイマー (setTimeout) を使用して各呼び出しを互いに約 500 ミリ秒間隔で起動すると、すべて正常に動作します。

何か案は?

要するに、私の質問は次のとおりです。

1. ワーカー内で同時にいくつの ajax 呼び出しを行うことができますか?

2. ワーカー内で ajax 呼び出しがキャンセルされたのはなぜですか? (解決済み)

3. 目前の問題とは少し関係ありませんが、1 ページで開始できるワーカーの最大数はいくつですか? メッセージを送信しないことがわかったら、ワーカーを停止する必要がありますか?

ありがとう

更新:非同期呼び出しがキャンセルされるという問題を解決したことがわかりました。問題は、ワーカー内で使用する独自の単純な ajax クラスを作成し、呼び出しごとにインスタンス化する代わりに、このオブジェクトの同じインスタンスを使用していたことです。そのため、以前の呼び出しが行われた後にそれを介して後続の呼び出しを行うと、新しい呼び出しが行われる前に返されなかった場合、最初の呼び出しがキャンセルされます。それが理にかなっていることを願っています。

4

1 に答える 1

0

setTimeouts なしで 6 つの diff ajax 呼び出しを試してみましたが、問題なく動作します。

最新の chrome/safari ブラウザーでも同じエラーが発生しますか?

サーバーの動作である可能性があります。また、web worker なしで試しましたか?

于 2012-06-22T23:12:27.383 に答える