私が書いているクロム拡張機能では、 localStorage に保存したいくつかのオブジェクトをサーバーに対して検証する必要があります。このために、各 localstorage 要素のデータを単純に送信し、 response で何かを行う必要がある for ループを作成しました。コードは次のようなものです。
for (var key in localStorage) {
if (! some condition )
continue;
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === 4 && httpRequest.response == 200) {
do something with 'key' from the for loop
}
}
};
var url = BASE_PATH ;
httpRequest.open("POST", url);
httpRequest.send(some data);
}
ただし、デバッグ中に、ajax 応答では、for ループからの「キー」は必要なキーではないようです。各 ajax 呼び出しに一致する for ループから同じキーを取得することを期待していましたが、取得したのはすべての ajax 呼び出しで同じキー。私は何か間違ったことをしていますか、それとも不可能なことを期待していますか? ajax はクロージャー関数内にあるため、値はメモリまたはそのようなものに保持されると思いました。