Schnell aufeinanderfolgende Funktionsaufrufe verhindern

Sebastiano06

Mitglied
Hallo, ich suche eine Möglichkeit den multiplen Aufruf einer JavaScript Funktion zu blocken.
Soll heißen:

- ich habe eine Funktion die nur einmal pro Sekunde aufgerufen werden kann:


Code:
function foo(bar) {
     if(allready called in the last second) {
        return;
     }
     
    // do something
}

das Ganze soll nicht sicher, bzw unumgehbar sein, es geht mir lediglich um die Performance...
 
setze doch einfach eine globale Variable , einen boolschen Wert, der nach dem einmaligen Aufruf einfach auf 1 gesetzt wird. Beim Aufruf der Funktion fragst du im Vorwegen diesen Wert ab. Ist er gesetzt , kann die Funktion kein weiteres Mal ausgeführt werden..
 
Eigentlich ist mir gerade aufgefallen, dass ich das Problem nichtmal ganz richtig dargestellt habe. Eigentlich ist es so, dass es innerhalb von 1-2 Sekunden mehrere Aufrufe geben kann und nur der Letzte auch wirklich ausgeführt werden soll! Also beim ersten Aufruf wird die Funktion aktiviert und wenn 1 Sekunde kein Aufruf mehr kam wird sie ausgeführt...

Update:

Falls jemals jemand das gleiche Problem haben sollte, ich habs nu folgendermaßen gelöst.

Code:
   var timeOutId  = null;

   function waitOrGo(){
      if(timeOutId == null){     
        timeOutId = setTimeout("fooBar()", 1500);
      }else{
        clearTimeout ( timeOutId );
        timeOutId = setTimeout("fooBar()", 1500);
      }
   }
   
   function fooBar() {
        timeOutId = null;
        // do something
    }

Es wird einfach immer die Funktion waitOrGo() aufgerufen und das t wunderprächtig, auch wenn es nicht so super sauber aussieht!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück