在我正在编写的 chrome 扩展中,我需要针对我的服务器验证我存储在 localStorage 中的一些对象。为此,我创建了一个 for 循环,它只为每个 localstorage 元素发送数据,并且需要对响应做一些事情。代码是这样的:
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 是在一个闭包函数中,所以值会保存在内存中或类似的东西中。