次のコードは 0 または 2 しか出力しないと思っていましたが、Firefox 24 では 1 を出力することがあります。これは (将来の) 標準に準拠していますか? タイムアウトイベントが同期呼び出しによってブロックされると、Firefoxはイベントを切り替えると思います。Chrome 30.0.1599.69 m では再現できませんでした (Web サイトを開いた状態でコンソールにこのコードを入力しました)。
var z=0;
var x = new XMLHttpRequest();
x.onload=function(){
console.log(z);
};
x.open('GET','.',true);//asynchronous call
x.send();
setTimeout(function(){
var i=1e7;
while(i--);//some time to waste while the asynchronous call finishes.
var y = new XMLHttpRequest();
y.open('GET','.',false);//synchronous call
z=1;
y.send();
z=2;
},10);
この問題を示す短いコードを知っている人はいますか?