В расширении chrome Я пишу, мне нужно проверить некоторые объекты, которые я сохранил в localStorage, на мой сервер. Для этого я создал цикл for, который просто отправляет данные для каждого элемента localstorage и должен что-то делать с ответом. Код что-то вроде этого:Ajax Inside For Loop
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);
}
Однако во время отладки это, кажется, что в ответ АЯКС, «ключ» из цикла для не ключ мне нужно: я ожидал, чтобы получить тот же ключ цикл for, который соответствует каждому вызову ajax, то, что я получил, был тем же ключом для всех вызовов ajax. Я делаю что-то неправильно или ожидаю чего-то, что невозможно? Я думал, что, поскольку ajax находится внутри функции закрытия, значения хранятся в памяти или что-то в этом роде.
Возможный дубликат [Javascript закрытия внутри петель - простой практический пример] (http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) –
Существует ")" что не должно быть там, если (httpRequest.readyState === 4) && httpRequest.response == 200) –