Ich habe diese Funktion. Der Zweck besteht darin, auf das Beenden eines externen Status zu warten, bevor eine andere Funktion aufgerufen wird.Endlosschleife mit SetInterval
var renderEditClickWrapper = function(event)
{
var wait = false;
function waitForSavingDone(){
if (options.dataStatusHandler.getStatus() == 'saving'){
wait = setInterval(function(){
waitForSavingDone();
}, 800);
}else{
wait = false;
call.renderEdit(event.data.name, event.data.rowId, event.data.parentId, event.data.options);
}
}
if (!wait) waitForSavingDone();
return false;
};
Dies funktioniert, aber wenn die Funktionen einmal warten, wird die Funktion immer wieder aufgerufen.
Ich benutze auch jQuery.
Irgendeine Idee, was ich falsch mache?
A 'setInterval' läuft immer wieder auf die Intervalldauer, die Sie bereitstellen. Aus diesem Grund erhöht sich die Anzahl der ausgeführten Intervalle exponentiell mit den rekursiven Aufrufen. Entweder ändern Sie es in 'setTimeout', oder erstellen Sie einfach ein einzelnes' setInterval', das mit 'clearInterval' beendet wird, wenn es fertig ist. –
... lässt Sie die API, die Sie aufrufen, nicht eine Callback-Funktion übergeben? Das wäre viel netter und idiomatischer als die Umfragen, um den Status zu ändern. –
@squint doh! Ich wollte setTimeout verwenden – jdog