Heim >Web-Frontend >js-Tutorial >Lassen Sie uns über die Methode „sleep()' in Javascript sprechen

Lassen Sie uns über die Methode „sleep()' in Javascript sprechen

coldplay.xixi
coldplay.xixinach vorne
2020-06-18 16:14:282425Durchsuche

Lassen Sie uns über die Methode „sleep()' in Javascript sprechen

Viele Programmiersprachen verfügen über sleep(), delay() und andere Methoden, die dazu führen können, dass unser Programm nicht so darauf bedacht ist, den nächsten Vorgang auszuführen, sondern zu verzögern und auf einen zu warten Zeitraum. In der Softwareentwicklung stoßen wir häufig auf Funktionen, die solche Funktionen erfordern, z. B. das Warten auf einige Minuten, um zu prüfen, ob ein Ereignis eintritt. Es gibt eine setTimeout()-Methode in JavaScript, um einen bestimmten Zeitraum für die Ausführung einer Aufgabe festzulegen, aber die Schreibmethode ist sehr hässlich und erfordert eine Rückruffunktion:

setTimeout(function(){ alert("Hello"); }, 3000);

JavaScript Promise API ist eine neue API mit Versprechen, wir Die setTimeout-Funktion kann verbessert werden. Das Folgende besteht darin, setTimeout() in eine sleep()-Funktion zu kapseln, die Promise zurückgibt.

// https://zeit.co/blog/async-and-await
function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

// 用法
sleep(500).then(() => {
    // 这里写sleep之后需要去做的事情
})

Sie werden feststellen, dass diese Schreibweise sehr elegant ist, ähnlich wie Verzögerungs- und Wartefunktionen in anderen Programmiersprachen. Die Promise-API ermöglicht es uns, die Übergabe von Rückruffunktionen zu vermeiden, und wir verwenden in unserer Implementierung auch die Pfeilfunktion in ES6.

Ein Problem, das hier erwähnt werden muss, ist, dass dies sleep() die weitere Ausführung des Programms bei der Ausführung „blockiert“. Es ist nicht synchron. Wenn wir möchten, dass es synchron ausgeführt wird, ohne die Ausführung von nachfolgendem Code zu behindern, können wir das Schlüsselwort async/await verwenden.

(async function() {
  console.log('Do some thing, ' + new Date());
  await sleep(3000);
  console.log('Do other things, ' + new Date());
})();

Ausführungsergebnis:

Do some thing, Mon Feb 23 2015 21:52:11 GMT+0800 (CST)  
Do other things, Mon Feb 23 2015 21:52:14 GMT+0800 (CST)

Sie werden feststellen, dass sleep() dieses Mal die Ausführung des zweiten console nicht behindert.

Aber async/await ist eine Syntax in ES7 und befindet sich noch im experimentellen Stadium. Was soll ich also tun, wenn ich diese async/await -Funktion jetzt nutzen möchte? Sie können Traceur ausprobieren, einen JavaScript-Precompiler von Google, der höhere Versionen von JavaScript in ES5-Code kompilieren kann. Er bietet experimentelle Unterstützung für async/await (Sie müssen –experimental verwenden, um es anzugeben).

Empfohlenes Tutorial: „Javascript-Grundlagen-Tutorial

Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Methode „sleep()' in Javascript sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:webhek.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen