Heim Web-Frontend js-Tutorial Wie setTimeout die Zeit auf 0 setzt

Wie setTimeout die Zeit auf 0 setzt

Mar 14, 2018 am 09:07 AM
settimeout 如何 设置

Dieser Artikel führt Sie hauptsächlich in den relevanten Inhalt zum Festlegen der setTimeout-Zeit auf 0 ein. setTimeout () ist eine Methode, die zu window gehört, aber wir alle lassen den Containernamen der obersten Ebene weg, der zum Festlegen einer Zeit verwendet wird . Wenn es ankommt, wird eine bestimmte Methode ausgeführt. Der folgende Artikel führt Sie hauptsächlich in die relevanten Informationen zum Festlegen der setTimeout-Zeit auf 0 ein. Freunde in Not können sich darauf beziehen.

1. Vorspeise, was ist setTimeout

Werfen wir zunächst einen Blick auf die Erklärung von setTimeout auf w3school

Die Methode setTimeout(fn,millisec) wird verwendet, um eine Funktion oder einen berechneten Ausdruck nach einer angegebenen Anzahl von Millisekunden aufzurufen.

Es ist ganz einfach setTimeout() Führt fn nur einmal aus. Wann es ausgeführt wird, hängt von der Anzahl der Millisekunden ab, die durch den zweiten Parameter Millisekunden festgelegt werden, daher sind viele Leute daran gewöhnt, es Verzögerung zu nennen . Es ist nichts anderes als eine gewisse Zeitspanne zu verzögern, bevor der darin enthaltene Code ausgeführt wird.


setTimeout(function(){
 console.log('我是setTimeout');
}, 1000);
Nach dem Login kopieren

Unter normalen Umständen wird dieser Satz nicht sofort, sondern nach 1000 Millisekunden in der Browserkonsole ausgegeben.

2. Hauptgericht, js ist Single-Threaded

OK, schauen wir uns ein Beispiel an dieses Beispiel?


setTimeout(function(){
 console.log(1);
}, 0);
console.log(2);
console.log(3);
Nach dem Login kopieren

Zur Überraschung einiger Leute waren die Ergebnisse 2, 3, 1. Dies scheint der Routine nicht zu folgen. Es wartet offensichtlich 0 Millisekunden, das heißt, es wird direkt ausgegeben, ohne zu warten. Warum wird am Ende 1 ausgegeben?

Dies erfordert die Klärung eines sehr wichtigen Konzepts: js ist Single-Threading. Single-Threading bedeutet, dass alle Aufgaben in die Warteschlange gestellt werden müssen und die nächste Aufgabe erst ausgeführt wird, wenn die vorherige Aufgabe abgeschlossen ist. Wenn die vorherige Aufgabe lange dauert, muss die nächste Aufgabe warten.

Tatsächlich ist es leicht zu verstehen. So wie jeder zum Einkaufen in den Supermarkt geht, muss sich jeder, der etwas kauft, an der Kasse anstellen Bedienen Sie jeweils nur eine Person. Der Kunde checkt aus. Erst nachdem dieser Kunde ausgecheckt hat, kann der nächste Kunde bedient werden.

Der Kernel des Browsers arbeitet unter der Kontrolle des Kernels zusammen, um die Synchronisierung aufrechtzuerhalten. Ein Browser implementiert mindestens drei residente Threads: Javascript-Engine-Thread, GUI-Rendering-Thread und Browser Ereignisse auslösen.

  • Die JavaScript-Engine basiert auf der ereignisgesteuerten Single-Thread-Ausführung. Die JS-Engine hat auf das Eintreffen von Aufgaben in der Aufgabenwarteschlange gewartet und diese dann nur vom Browser verarbeitet Es kann jederzeit ein JS-Thread ausgeführt werden.

  • Der GUI-Rendering-Thread ist für das Rendern der Browseroberfläche verantwortlich. Wenn die Schnittstelle neu gezeichnet werden muss (Repaint) oder ein Reflow durch einen Vorgang verursacht wird, wird dies der Fall sein hingerichtet. Es ist jedoch zu beachten, dass sich der GUI-Rendering-Thread und die JS-Engine gegenseitig ausschließen. Wenn die JS-Engine ausgeführt wird, wird der GUI-Thread angehalten und GUI-Updates werden in einer Warteschlange gespeichert und sofort ausgeführt, wenn die JS-Engine ausgeführt wird Leerlauf.

  • Ereignisauslöser-Thread Wenn ein Ereignis ausgelöst wird, fügt der Thread das Ereignis am Ende der ausstehenden Warteschlange hinzu und wartet auf die Verarbeitung durch die JS-Engine. Diese Ereignisse können aus dem Codeblock stammen, der derzeit von der JavaScript-Engine ausgeführt wird, z. B. setTimeOut, oder aus anderen Threads im Browserkernel, z. B. Mausklicks, asynchronen AJAX-Anforderungen usw. Aufgrund der Single-Thread-Beziehung von JS jedoch alle Diese Ereignisse müssen zur Verarbeitung durch die JS-Engine in die Warteschlange gestellt werden. (Asynchroner Code wird ausgeführt, wenn im Thread kein synchroner Code ausgeführt wird.)

Wenn die Ausführung des js-Codes tatsächlich auf setTimeout(fn,millisec) trifft, ist der fn die Funktion wird in die Aufgabenwarteschlange gestellt. Wenn der JS-Engine-Thread inaktiv ist und die durch Millisekunden angegebene Zeit erreicht, wird fn zur Ausführung in den JS-Engine-Thread gestellt.

setTimeout(fn,0) bedeutet, eine Aufgabe anzugeben, die in der frühesten verfügbaren Leerlaufzeit des Hauptthreads ausgeführt werden soll, dh so früh wie möglich ausgeführt werden soll. Es fügt am Ende der „Aufgabenwarteschlange“ ein Ereignis hinzu, sodass es erst ausgeführt wird, wenn die Synchronisierungsaufgabe und die vorhandenen Ereignisse in der „Aufgabenwarteschlange“ verarbeitet wurden.

Der HTML5-Standard schreibt vor, dass der Mindestwert (kürzestes Intervall) des zweiten Parameters von setTimeout() nicht weniger als 4 Millisekunden betragen darf. Wenn er niedriger als dieser Wert ist, wird er automatisch erhöht. Zuvor haben ältere Browser das Mindestintervall auf 10 Millisekunden festgelegt. Darüber hinaus werden diese DOM-Änderungen (insbesondere solche, die das erneute Rendern von Seiten beinhalten) normalerweise nicht sofort, sondern alle 16 Millisekunden ausgeführt. Zu diesem Zeitpunkt ist die Wirkung von requestAnimationFrame() besser als setTimeout() .

Es ist zu beachten, dass setTimeout() das Ereignis nur in die „Aufgabenwarteschlange“ einfügt. Der Hauptthread führt die von ihm angegebene Rückruffunktion erst aus, wenn der aktuelle Code (Ausführungsstapel) abgeschlossen ist. Wenn der aktuelle Code lange dauert, kann es lange dauern, sodass nicht garantiert werden kann, dass die Rückruffunktion zu dem durch setTimeout() angegebenen Zeitpunkt ausgeführt wird.

3. Dessert, die wunderbaren Einsatzmöglichkeiten von setTimeout

Tatsächlich hat setTimeout einige wunderbare Einsatzmöglichkeiten, hier sind einige.

Funktionsentprellung

让一个函数在一定间隔内没有被调用时,才开始执行被调用方法。比如当你在使用 google 搜索内容的时候,有些关键词输入到一半,谷歌会展示一个可选列表,根据你当前输入的内容作出的一个猜测联想。需要监听文字改变,每一次改变都会调用一次回调函数,现在需要的一种实现是在用户停止键盘事件一段时间后,去发送一个请求。


var debounce = function(method, context) {
 clearTimeout(method.tId);
 method.tId = setTimeout(function(){
  method.call(context);
 },100);
}
Nach dem Login kopieren

轮训任务

js中可以使用setInterval开启轮询,但是这种存在一个问题就是执行间隔往往就不是你希望的间隔时间。

比如有个轮询任务间隔是100ms,但是执行方法的时间需要450ms,那么在200ms、300ms、400ms本来是计划中执行任务的时间,浏览器发现第一个还未执行完,那么就会放弃2、3、4次的任务执行,并且在500ms之后再次执行任务,这样的话,其实再次执行的间隔就只有50ms。使用setTimeout构造轮询能保证每次轮询的间隔。


setTimeout(function () {
 console.log('我被调用了');
 setTimeout(arguments.callee, 100);
}, 100);
Nach dem Login kopieren

延迟js引擎的调用


var p = document.createElement('p');
p.innerHTML = '我是一个p';
p.setAttribute('style', 'width:200px; height:200px;background-color:#f00; ');
document.body.appendChild(p);
setTimeout(function() {
 console.log('我被调用了');
}, 1000);
Nach dem Login kopieren

虽然setTimeout有一些妙用,但是他确实是在宏观任务队列中新增任务了,所以万万不能滥用啊。

相关推荐:

JS中setInterval和setTimeout实例分析

JavaScript中setTimeout()的使用详解

javascript函数setTimeout带参数用法实例详解

Das obige ist der detaillierte Inhalt vonWie setTimeout die Zeit auf 0 setzt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie legt man den geplanten Zeitpunkt für die Veröffentlichung von Werken auf Douyin fest? Wie wird die Videodauer eingestellt? Wie legt man den geplanten Zeitpunkt für die Veröffentlichung von Werken auf Douyin fest? Wie wird die Videodauer eingestellt? Mar 27, 2024 pm 06:11 PM

Das Veröffentlichen von Werken auf Douyin kann mehr Aufmerksamkeit und Likes erregen, aber manchmal kann es für uns schwierig sein, Werke in Echtzeit zu veröffentlichen. In diesem Fall können wir die Funktion zur geplanten Veröffentlichung von Douyin nutzen. Mit der geplanten Veröffentlichungsfunktion von Douyin können Benutzer Werke automatisch zu geplanten Zeiten veröffentlichen, wodurch der Veröffentlichungsplan besser geplant und die Bekanntheit und der Einfluss der Werke erhöht werden können. 1. Wie legt man den geplanten Zeitpunkt für die Veröffentlichung von Werken auf Douyin fest? Um eine geplante Veröffentlichungszeit festzulegen, gehen Sie zunächst auf die persönliche Homepage von Douyin, suchen Sie die Schaltfläche „+“ in der oberen rechten Ecke und klicken Sie, um die Veröffentlichungsseite aufzurufen. In der unteren rechten Ecke der Veröffentlichungsseite befindet sich ein Uhrensymbol. Klicken Sie hier, um die Schnittstelle für geplante Veröffentlichungen aufzurufen. In der Benutzeroberfläche können Sie die Art der Arbeit auswählen, die Sie veröffentlichen möchten, einschließlich kurzer Videos, langer Videos und Live-Übertragungen. Als nächstes müssen Sie festlegen, wann Ihre Arbeit veröffentlicht werden soll. TikTok bietet

Wo ist das Douyin-Tag gesetzt? Wie kann es markiert werden, damit es korrekt gepusht werden kann? Wo ist das Douyin-Tag gesetzt? Wie kann es markiert werden, damit es korrekt gepusht werden kann? Mar 27, 2024 am 11:01 AM

Als eine der beliebtesten Kurzvideoplattformen der Welt ermöglicht Douyin jedem, zum Schöpfer zu werden und jeden Moment im Leben zu teilen. Für Douyin-Benutzer sind Tags eine sehr wichtige Funktion. Sie können Benutzern helfen, Inhalte besser zu klassifizieren und abzurufen, und ermöglichen es der Plattform außerdem, geeignete Inhalte genauer an Benutzer weiterzuleiten. Wo werden also die Douyin-Tags gesetzt? In diesem Artikel wird ausführlich erläutert, wie Sie Tags auf Douyin einrichten und verwenden. 1. Wo wird das Douyin-Tag gesetzt? Die Verwendung von Tags auf Douyin kann Benutzern helfen, ihre Werke besser zu klassifizieren und zu kennzeichnen, sodass andere Benutzer sie leichter finden und ihnen folgen können. Die Methode zum Festlegen des Etiketts ist wie folgt: 1. Öffnen Sie die Douyin-App und melden Sie sich bei Ihrem Konto an. 2. Klicken Sie auf das „+“-Zeichen am unteren Bildschirmrand und wählen Sie die Schaltfläche „Veröffentlichen“. 3.

Einrichten von Chinesisch mit VSCode: Die vollständige Anleitung Einrichten von Chinesisch mit VSCode: Die vollständige Anleitung Mar 25, 2024 am 11:18 AM

VSCode-Setup auf Chinesisch: Eine vollständige Anleitung In der Softwareentwicklung ist Visual Studio Code (kurz VSCode) eine häufig verwendete integrierte Entwicklungsumgebung. Für Entwickler, die Chinesisch verwenden, kann die Einstellung von VSCode auf die chinesische Schnittstelle die Arbeitseffizienz verbessern. In diesem Artikel erhalten Sie eine vollständige Anleitung, die detailliert beschreibt, wie Sie VSCode auf eine chinesische Schnittstelle einstellen, und spezifische Codebeispiele bereitstellt. Schritt 1: Laden Sie das Sprachpaket herunter und installieren Sie es. Klicken Sie nach dem Öffnen von VSCode auf links

So legen Sie ein Hintergrundbild in der WallpaperEngine fest So legen Sie ein Hintergrundbild in der WallpaperEngine fest Mar 23, 2024 pm 09:06 PM

Wallpaperengine ist eine sehr beliebte Hintergrundsoftware. Wie stellt man also ein Hintergrundbild ein? Benutzer müssen diese Software zuerst starten und dann auf ein Hintergrundbild klicken. Die Einstellungen werden automatisch durchgeführt. Im Folgenden erfahren Sie, wie Sie das Hintergrundbild festlegen . Kommen Sie vorbei. Wie lege ich ein Hintergrundbild auf der WallpaperEngine fest? Antwort: Doppelklicken Sie auf das Hintergrundbild, um es automatisch festzulegen: 1. Klicken Sie zunächst auf die Software in Steam, um sie zu starten. 2. Starten Sie die WallpaperEngine. 3. Wählen Sie nach dem Aufrufen der Benutzeroberfläche ein Hintergrundbild aus, das Ihnen gefällt, und klicken Sie auf „Bestätigen“, um es zu verwenden. 4. Auf der rechten Seite befinden sich einige Einstellungsschaltflächen, die bei Bedarf verwendet werden können

„Bitte nicht stören'-Modus funktioniert auf dem iPhone nicht: Behebung „Bitte nicht stören'-Modus funktioniert auf dem iPhone nicht: Behebung Apr 24, 2024 pm 04:50 PM

Selbst das Beantworten von Anrufen im Modus „Bitte nicht stören“ kann ein sehr lästiges Erlebnis sein. Wie der Name schon sagt, deaktiviert der Modus „Bitte nicht stören“ alle Benachrichtigungen über eingehende Anrufe und Warnungen von E-Mails, Nachrichten usw. Sie können diesen Lösungssätzen folgen, um das Problem zu beheben. Fix 1 – Fokusmodus aktivieren Aktivieren Sie den Fokusmodus auf Ihrem Telefon. Schritt 1 – Wischen Sie von oben nach unten, um auf das Kontrollzentrum zuzugreifen. Schritt 2 – Aktivieren Sie als Nächstes den „Fokusmodus“ auf Ihrem Telefon. Der Fokusmodus aktiviert den „Bitte nicht stören“-Modus auf Ihrem Telefon. Es werden keine Benachrichtigungen über eingehende Anrufe auf Ihrem Telefon angezeigt. Fix 2 – Fokusmodus-Einstellungen ändern Wenn es Probleme mit den Fokusmoduseinstellungen gibt, sollten Sie diese beheben. Schritt 1 – Öffnen Sie Ihr iPhone-Einstellungsfenster. Schritt 2 – Als nächstes schalten Sie die Fokusmodus-Einstellungen ein

So richten Sie geplante Veröffentlichungen auf Weibo ein_Tutorial zum Einrichten geplanter Veröffentlichungen auf Weibo So richten Sie geplante Veröffentlichungen auf Weibo ein_Tutorial zum Einrichten geplanter Veröffentlichungen auf Weibo Mar 29, 2024 pm 03:51 PM

1. Öffnen Sie den Weibo-Client, klicken Sie auf der Bearbeitungsseite auf die drei kleinen Punkte und dann auf Geplanter Beitrag. 2. Nachdem Sie auf „Geplante Veröffentlichung“ geklickt haben, wird auf der rechten Seite der Veröffentlichungszeit eine Zeitoption angezeigt. Legen Sie die Zeit fest, bearbeiten Sie den Artikel und klicken Sie auf die gelben Wörter in der unteren rechten Ecke, um ihn regelmäßig zu veröffentlichen. 3. Die mobile Version von Weibo unterstützt derzeit keine geplante Veröffentlichung. Diese Funktion kann nur auf dem PC-Client verwendet werden!

So setzen Sie das Wasserzeichen in der Mitte auf Weibo_So setzen Sie das Wasserzeichen in der Mitte auf Weibo So setzen Sie das Wasserzeichen in der Mitte auf Weibo_So setzen Sie das Wasserzeichen in der Mitte auf Weibo Mar 29, 2024 pm 03:31 PM

1. Geben Sie zunächst Weibo ein, klicken Sie dann unten rechts auf „Ich“ und wählen Sie „Kundenservice“. 2. Geben Sie dann [Wasserzeichen] in das Suchfeld ein und wählen Sie [Weibo-Bildwasserzeichen festlegen]. 3. Klicken Sie dann in der Benutzeroberfläche auf [Link]. 4. Klicken Sie dann im neu geöffneten Fenster auf [Einstellungen für Bildwasserzeichen]. 5. Aktivieren Sie abschließend [Picture Center] und klicken Sie auf [Speichern].

Wo werden Douyin-Empfehlungen und -Auswahlen festgelegt? Wo werden Douyin-Empfehlungen und -Auswahlen festgelegt? Mar 27, 2024 pm 05:06 PM

Wo sind die Empfehlungen und Auswahlmöglichkeiten für Douyin-Kurzvideos? Die meisten Benutzer wissen nicht, wie sie Empfehlungen und Auswahlmöglichkeiten für die Benutzer festlegen. Audio-Empfehlungen und ausgewählte Tutorials zu Einstellmethoden, interessierte Nutzer kommen vorbei! Tutorial zur Douyin-Nutzung Wo man Douyin-Empfehlungen und -Auswahlen einrichtet 1. Öffnen Sie zunächst die Douyin-Kurzvideo-APP und rufen Sie die Hauptseite auf, klicken Sie auf den Bereich [Ich] in der unteren rechten Ecke und wählen Sie [drei horizontale Linien] in der oberen rechten Ecke aus ; 2. Dann wird die Funktionsleiste auf der rechten Seite erweitert. Wählen Sie unten die Seite „Einstellungen“ aus. 3. Suchen Sie dann auf der Funktionsseite „Persönliche Informationen“ nach dem Dienst Informationsverwaltungsseite, Folie [Personalisierte Inhaltsempfehlungen] 】Die Schaltfläche auf der Rückseite kann eingestellt werden.

See all articles