Frage

Ich habe einen Bericht in unserem internen System, das überall von 1 Tag Daten auf volle Jahre zurückkehren kann. Aus diesem Grunde kann der Bericht 0,5 Sekunden dauern oder über 45 Sekunden alles zu erzeugen.

Der Bericht können Sie eine Reihe von Filtern ändern, alle die, wenn sie modifiziert, ein Ajax-Request abfeuern sehr einfach:

var ax = $.ajax({
    type: "GET",
    url: "/blah",
    data: values,
    success: function(data) { .. }
});

Jetzt kommt das Problem, wenn unsere wunderbaren Benutzerzustände „Oh, Moment mal! Ich das von Februar sein will, nicht Januar!“. Aber, wird eine Anforderung bereits seit Januar geschieht, ist eine Menge von Daten! So schaltet der Benutzer die Datumsoption bis Februar, und ich kann die Javascript-Konsole sieht eine zweite Anforderung aussendet. Jetzt haben wir zwei gehen und es ist ein Rennen!

  

/ report /? Start_date = Januar (Still Laden ...)

     

/ report /? Start_date = Februar (Hey, ich bin jetzt hier auch!)

Dann, in der Regel die kleinere früher laden, aber dann werden die anderen Lasten und es überschreibt der, den sie schon hatte .. hmm:)

Ich habe versucht ax.abort() nach der Erklärung der ax Variable platziert Verwendung wie erwähnt hier aber es scheint nicht zu funktionieren.

So, jetzt frage ich mich, was bin ich dabei? Ich möchte nur die aktuelle Anforderung töten (Client-Seite, ich weiß, dass ich nichts davon auf der Server-Seite tun kann), sobald der Benutzer einige Optionen ändert, damit ich nicht 2 habe keine oder mehr Anfragen zur gleichen Zeit gehen . async: false Einstellung ist keine Option, da es nur den Benutzer heraus verriegelt.

Vielen Dank im Voraus für Ihre Hilfe.

War es hilfreich?

Lösung

Sie können einen Blick auf die ajaxmanager Plugin.

Andere Tipps

Ich denke, dass vorherige Anforderung abbrechen möchten, ist keine gute Lösung. Vielleicht sollten Sie einfach Abhilfe verwenden - für jeden Zähler Ajax-Request Erhöhung Javascript, und an den Ajax-Rückruf übergeben. Wenn die Rückrufprüfung tritt auf, wenn der Zähler der Antwort ist die gleiche wie der aktuelle Zählerwert. Wenn nicht, dann die Antwort ignorieren -. Es durch veraltete Klick-Ereignis ausgelöst wurde

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