В моем коде javascript я получаю значение, которое сообщает мне, сколько раз мне нужно выполнить фрагмент кода, но он выполняется точно в срок.
Например:
var qtt = 3;
for (var i = 1; i <= qtt; i++) {
console.info(i);
$.get( "/set-serie", function(seriedata)
{
console.info('test ' + i);
});
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>Результат:
1
2
3
test 4
Итак, это просто выполняет код один раз вместо 3. И я не понимаю, почему он поставил 4 в конце.
Это также запах кода, что вызов ajax является одним и тем же вызовом для каждой итерации.
Это дубликат ни одного из этих вопросов. @ zero298 превратите ваш комментарий в ответ!
Слева от 3 должно быть поле с test 4, означающее, что test 4 регистрировался как 3 раз.
@D_N ваш комментарий сбивает с толку. Вы утверждаете, что его комментарий - это ответ, и что это не дубликат ... но дубликат - это точный сценарий.
@KevinB Нет, речь идет о цикле, основанном на простом цикле и прослушивателе событий на странице, и не включает запрос AJAX, который создает проблему для OP. А ранее были три отдельные статьи, связанные как дубликаты, ни одна из которых не была одинаковой, что вызвало мой общий комментарий.
@D_N Это абсолютно дубликат. Это может быть комбинация дубликатов многих из перечисленных дубликатов, но это все равно дубликат. Проблема возникает из-за того, что счетчик итераций не записывается в контекст, на который не влияет цикл for.
@ zero298 Если это комбинация нескольких страниц, которые не дублируются, это не дубликат.
Один дубликат это адекватно покрывает. Нам не нужно несколько.
Мне кажется, что OP не знает, как работает консоль, видя тест, напечатанный только один раз, и поэтому думаю, что функция запускалась только один раз, предполагая, что @ibrahimmahrir верна. Хотя OP может извлечь выгоду из прочтения вопроса «закрыть как повторяющийся», я не согласен, что на самом деле это дубликат.
Это просто делает его X / Y, но не дублирует.
@KevinB Если вы это уже знаете, это имеет смысл в качестве ответа. Если вы этого не сделаете, это не так. Не очень полезно.
Вы могли рассматривать вопрос как дубликат, но только очень абстрактно. Кроме того, помимо проблемы с «дубликатом», OP спрашивает, почему i равно 4, а он ожидал 3. Это не объясняется в «дубликате».
Проголосуйте.
@D_N, значит, он слишком локализован.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


К моменту завершения
$.get()он находится в конце цикла, и значение переменной было увеличено.