Lassen Sie mich die Frage klären:
Ich habe eine Funktion in meiner Steuerung, die einen Service verwendet, um eine HTTP-GET-Anfrage zu senden, um zu sehen, ob der Status "erledigt" ist. Diese Funktion wird alle 5 Sekunden ausgeführt. Dies würde jedoch auch alle 5 Sekunden ausgeführt werden, selbst wenn noch keine Antwort vorliegt, ohne die vorherige Anforderung zu löschen.
Wie kann ich sicherstellen, dass innerhalb von 5 Sekunden keine Antwort erfolgt, wenn die vorherige Anforderung beendet wird? Oder gibt es dafür eine bessere Lösung?
Hier ist mein $ Intervallfunktion:
self.$interval(function setInterval() {
EngineService.getEngines().then(
function getEngines(response) {
self.enginesListFromDatabase = response;
for (const item of self.enginesListFromDatabase) {
if (item.status === 'done' && self.doneArray.indexOf(item.id) === -1) {
self.doneArray.push(item.id);
}
}
}
);
}, self.interval);
Der Dienst hat diese http Aufruf:
getEngines() {
return this.$http({
method: 'GET',
url: '/api/engines',
}).then(
function getResponse(res){
return res.data;
}
);
}
Ich habe versucht, in die Dokumente suchen, konnte aber keinen Sinn machen, wie $ Intervall zu verwenden richtig für diesen Fall oder $ q.
Ich will nicht der gesamte Prozess $ Intervalls obwohl zu stoppen, ich möchte nur die vorherige Anforderung zu ‚sterben‘ oder etwas, wenn es keine Antwort gibt in sich selbst. Zeitintervall. Damit kommt die Antwort auf die zweite Anfrage nie vor der Antwort auf die erste Anfrage zurück. – McFiddlyWiddly
Warum interessiert es Sie, ob die vorherige Anfrage abgebrochen wurde oder nicht? Du bekommst immer noch deine Antwort. –
Weil, wenn ich um 11 Uhr Anfrage # 1 sende, und der Server gibt mir "Not done", aber sendet die Antwort nicht in 5 Minuten zurück. Wenn ich um 11: 10 Uhr Anfrage Nr. 2 sende, antwortet der Server schnell und sagt mir "fertig". Danach kommt die Antwort auf Anfrage # 1 zurück und sagt "Nicht erledigt". Ich würde denken, dass es später "nicht gemacht" wurde, nicht umgekehrt. Sag mir, wenn ich etwas falsch verstehe. – McFiddlyWiddly