Ich entwickle eine Website in Angular 2 mit Typescript und habe mich gefragt, ob es eine Möglichkeit gibt, thread.sleep(ms)
Funktionen zu implementieren .
Mein Anwendungsfall besteht darin, die Benutzer nach dem Absenden eines Formulars nach einigen Sekunden umzuleiten, was in HTML oder Javascript sehr einfach ist, aber ich bin mir nicht sicher, wie ich es in Typescript machen soll.
Danke vielmals,
angular
typescript
kha
quelle
quelle
Antworten:
Sie müssen auf TypeScript 2.0 mit
async
/await
für ES5-Unterstützung warten, da es jetzt nur für die Kompilierung von TS zu ES6 unterstützt wird.Sie können eine Verzögerungsfunktion erstellen mit
async
:Und nenn es
Bitte beachten Sie, dass Sie
await
nur die Innenfunktion verwendenasync
können.Wenn Sie dies nicht können ( sagen wir, Sie erstellen eine NodeJS-Anwendung ), platzieren Sie Ihren Code einfach in einer anonymen
async
Funktion. Hier ist ein Beispiel:Beispiel für eine TS-Anwendung: https://github.com/v-andrew/ts-template
In OLD JS müssen Sie verwenden
oder
Jedoch mit jedem großen Browser, der unterstützt
async
/await
es ist veraltet.Vergessen Sie jedoch nicht, dass Sie
Promise
beim Kompilieren auf ES5 eine Implementierung benötigen, bei der Promise nicht nativ verfügbar ist.quelle
await new Promise(resolve => setTimeout(resolve, 1000)).then(()=>console.log("fired"));
aber es hat funktioniertawait new Promise(resolve => setTimeout(()=>resolve(), 1000)).then(()=>console.log("fired"));
async
Funktion. Ich fügte Beispiel hinzuDas funktioniert: (dank der Kommentare)
quelle
Aus irgendeinem Grund funktioniert die oben akzeptierte Antwort in neuen Versionen von Angular (V6) nicht.
dafür benutze das ..
oben hat für mich gearbeitet.
Verwendung:
ODER genauer Weg
quelle
Mit
RxJS
:x
ist 0.Wenn Sie ein zweites Argument geben
period
zutimer
, wird eine neue Nummer jeweils abzugebendenperiod
Millisekunden (x = 0 , dann ist x = 1, x = 2, ...).Weitere Informationen finden Sie im offiziellen Dokument .
quelle
Wenn Sie angle5 und höher verwenden, fügen Sie bitte die folgende Methode in Ihre ts-Datei ein.
Rufen Sie dann diese delay () -Methode auf, wo immer Sie möchten.
z.B:
Das Knurren der Nachricht verschwindet nach 3 Sekunden.
quelle
Das funktioniert besser für mich
quelle
Oder anstatt eine Funktion zu deklarieren, einfach:
quelle