Почему я получаю ошибку q[num] при прерывании конвейера очереди jQuery?

StackOverflow https://stackoverflow.com/questions/30342

  •  09-06-2019
  •  | 
  •  

Вопрос

При создании и выполнении очереди запросов ajax с помощью $.manageAjax, Я звоню ajaxManager.abort();, чтобы прервать всю очередь из-за ошибки, и в этот момент я получаю сообщение об ошибке: q[num] has no properties (jquery.ajaxmanager.js line 75)

Вот код вызова:

var ajaxManager = $.manageAjax({manageType:'sync', maxReq:0});
// setup code calling ajaxManager.add(...)

// in success callback of first request
ajaxManager.abort(); <-- causes error in jquery.ajaxManager.js

В очереди 4 запроса, это вызывается при успехе первого запроса, если соблюдены определенные критерии, очередь необходимо прервать.

Есть идеи?

Это было полезно?

Решение

Похоже, у вас меньше элементов в q, чем вы ожидали, когда начали итерацию.Возможно, ваш скрипт пытается получить доступ к q[q.length], т.е.элемент после последнего элемента.

Может ли быть так, что ваш успешный запрос был удален из очереди, и у вас возникла гонка?Вы пытаетесь прервать запрос, который уже завершил свой жизненный цикл?Альтернативно, вы допустили глупую ошибку, как это иногда делают люди, и неправильно поняли условие завершения цикла?

Всего несколько мыслей, надеюсь, они помогут.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top