XMLHttpRequestを同期モードで動かして既に送られていた非同期リクエストのレスポンスが同期リクエストのレスポンス前に返ってきたらどうなるかのブラウザ毎の挙動を調べました。
何を言っているのかわかりにくいですが
非同期リクエスト
↓
同期リクエスト
↓
非同期リクエストのレスポンス
↓
同期リクエストのレスポンス
の形になった場合どうなるか。
- chrome
同期リクエストのレスポンス処理が優先される。(個人的には一番望ましい形) - FireFox
同期リクエスト中も関係無くレスポンスが届いた瞬間に処理される。 - IE
同期リクエスト中は処理されないがサーバーからレスポンスが届いた順に処理される。
つまり、この辺りの制御は自前で行うしかないってことですね。
Ajaxで決済処理を行うときなどは同期処理を使っているのですが、その間に別の処理が入ると嫌なので上手くブラウザが処理してくれないかなと思っていたらやっぱりダメでした。