Heim  >  Artikel  >  Web-Frontend  >  Eine kurze Diskussion über JavaScript-Timeout-Aufrufe und intermittierende Aufrufe_Javascript-Kenntnisse

Eine kurze Diskussion über JavaScript-Timeout-Aufrufe und intermittierende Aufrufe_Javascript-Kenntnisse

WBOY
WBOYOriginal
2016-05-16 15:41:422034Durchsuche

Intermittierender Anruf

Intermittierende Aufrufe kommen in JavaScript sehr häufig vor. setInterval wird in einem bestimmten Intervall wiederholt aufgerufen.

Die Methode

setInterval() empfängt zwei Parameter: Der erste Parameter kann ein String oder eine Funktion sein, und der zweite Parameter ist eine Zahl in Millisekunden, die die Länge des Wiederholungsintervalls angibt.

Der Parameter ist eine Zeichenfolge

Wenn der erste übergebene Parameter eine Zeichenfolge ist, wie folgt:

setInterval("alert('this is a string.')",1000);

Die Zeichenfolge hier ist ein Stück JavaScript-Code, der mit dem Parameter der übergebenen Funktion eval() identisch ist. Wenn sich innen und außen zwei Anführungszeichen befinden, denken Sie daran, dass die Anführungszeichen nicht gleich sein sollten.

setInterval() gibt eine numerische ID zurück. Diese ID ist eine eindeutige Kennung des geplanten Ausführungscodes und kann daher zum Abbrechen wiederholter Vorgänge verwendet werden. SetInterval() entspricht einer Methode zum Abbrechen des Vorgangs: clearInterval() Wenn Sie einen wiederholten Vorgang abbrechen möchten, muss natürlich clearInterval() platziert werden, bevor die Ausführung abgeschlossen ist.

Zum Beispiel:

var intervalId=setInterval(...);
clearInterval(intervalId);

Zuerst erhalten wir die ID und übergeben sie dann an clearInterval(). Da der Abbruchvorgang auf setInterval() folgt, kann er sofort abgebrochen werden, so als ob er nicht stattgefunden hätte.

Der Parameter ist eine Funktion

Da der übergebene Parameter eine Zeichenfolge ist, kann dies zu Leistungseinbußen führen. Unter normalen Umständen besteht die am häufigsten verwendete Methode darin, eine Funktion an ihn zu übergeben.

lautet wie folgt:

var num=0;
function increNum(){
 num++;
 if(num>=10){
  clearInterval(intervalId);
  alert('over');
 }
}
intervalId=setInterval(increNum,500);

Dieses Programm legt eine incrNum-Funktion fest und übergibt sie als Parameter an setInterval(). Gleichzeitig wird der laufende Vorgang abgebrochen und eine Warnmeldung angezeigt.

Timeout-Anruf

Der Timeout-Aufruf ähnelt dem intermittierenden Aufruf setTimeout(), er empfängt außerdem zwei Parameter, der erste kann eine Zeichenfolge mit JavaScript-Code oder eine Funktion sein, der zweite Parameter ist die Verzögerungszeit und setInterval() Die Parameter der Methode sind gleich.

Aber hier ist etwas zu beachten:

Die Verzögerungszeit bedeutet nicht, dass das Programm nach der eingestellten Verzögerung definitiv ausgeführt wird.

Warum?

Da es sich bei JavaScript um einen Single-Thread-Interpreter handelt, kann er nur einen Codeabschnitt innerhalb eines bestimmten Zeitraums ausführen und nicht mehrere Codeabschnitte gleichzeitig ausführen. Daher gibt es in JavaScript eine Aufgabenwarteschlange Die auszuführenden Aufgaben werden der Reihe nach in der Warteschlange angeordnet. Die eingestellte Verzögerungszeit ist die Zeit, nach der die aktuelle Aufgabe zur Aufgabenwarteschlange hinzugefügt wird. Wenn derzeit keine Aufgabe ausgeführt wird, wird der zur Aufgabenwarteschlange hinzugefügte Code sofort ausgeführt. Wenn derzeit ein Codesegment ausgeführt wird, wird die neu hinzugefügte Aufgabe erst ausgeführt, nachdem das Codesegment ausgeführt wurde.

In ähnlicher Weise verfügt setTimeout() auch über eine Rückgabe-ID, und Sie können diese numerische ID auch verwenden, um den Timeout-Aufruf abzubrechen. Die entsprechende Abbruchmethode ist clearTimeout().

Hier verwenden wir die Timeout-Aufrufmethode, um den Code zu kopieren, der im intermittierenden Aufruf wiederholt ausgeführt wird:

var num=0;
function increNum(){
 num++;
 if(num<=10){
  setTimeout(increNum,500);
 }else{
  alert('over');
 }
}
setTimeout(increNum,500);

Dieses Programm kann auch wiederholte Vorgänge abschließen und den Vorgang nach zehn Malen beenden. Der Unterschied zum obigen setInterval() besteht darin, dass es nicht die zurückgegebene numerische ID verwendet.

Da setInterval() wiederholt ausgeführt wird, wird immer eine numerische ID zurückgegeben, sodass diese numerische ID ständig verfolgt werden muss und setTimeout() nach der Ausführung nicht mehr ausgeführt wird, sodass wir sie nicht mehr benötigen um die zurückgegebene numerische ID zu verfolgen. Dies bringt uns eine gewisse Bequemlichkeit.

Darüber hinaus kann der letzte intermittierende Aufruf aufgerufen werden, bevor der vorherige intermittierende Aufruf endet. Diese Situation tritt auf, wenn die Ausführungszeit der Funktion länger als die Zeit des intermittierenden Aufrufs ist. Zusammenfassend lässt sich sagen, dass die Verwendung von setTimeout() besser ist Möglichkeit, intermittierende Anrufe zu simulieren.

Natürlich ist die Verwendung von setInterval() in relativ einfachen Programmen kein großes Problem (mir fiel plötzlich ein Satz ein: „Existenz ist vernünftig“~~~~).

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn