Warum erhalte ich einen q[num]-Fehler, wenn ich eine jQuery-Warteschlangenpipeline abbreche?

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

  •  09-06-2019
  •  | 
  •  

Frage

Beim Erstellen und Ausführen einer Ajax-Anforderungswarteschlange mit $.manageAjax, Ich rufe ajaxManager.abort();, um die gesamte Warteschlange aufgrund eines Fehlers abzubrechen. Zu diesem Zeitpunkt erhalte ich die folgende Fehlermeldung: q[num] has no properties (jquery.ajaxmanager.js line 75)

Hier ist der Aufrufcode:

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

In der Warteschlange befinden sich 4 Anfragen. Dies wird bei Erfolg der ersten Anfrage aufgerufen. Wenn bestimmte Kriterien erfüllt sind, muss die Warteschlange abgebrochen werden.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Es sieht so aus, als hätten Sie in q weniger Elemente, als Sie zu Beginn der Iteration erwartet hatten.Ihr Skript versucht möglicherweise, auf q[q.length] zuzugreifen, d. h.das Element nach dem letzten Element.

Könnte es sein, dass Ihre erfolgreiche Anfrage aus der Warteschlange entfernt wurde und Sie eine Racebedingung haben?Versuchen Sie, eine Anfrage abzubrechen, deren Lebenszyklus bereits abgeschlossen ist?Haben Sie alternativ einen dummen Fehler gemacht, wie es manchmal passiert, und Ihre Schleifenbeendigungsbedingung falsch verstanden?

Nur ein paar Gedanken, ich hoffe, sie helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top