Je développe un site Web dans Angular 2 en utilisant Typescript et je me demandais s'il y avait un moyen d'implémenter des thread.sleep(ms)
fonctionnalités.
Mon cas d'utilisation est de rediriger les utilisateurs après avoir soumis un formulaire après quelques secondes, ce qui est très facile en html ou javascript mais je ne sais pas comment le faire dans Typescript.
Merci beaucoup,
Réponses:
Vous devez attendre TypeScript 2.0 avec
async
/await
pour la prise en charge d'ES5 car il n'est désormais pris en charge que pour la compilation TS vers ES6.Vous seriez en mesure de créer une fonction de retard avec
async
:Et appelle ça
Veuillez noter que vous ne pouvez utiliser
await
que laasync
fonction interne .Si vous ne pouvez pas ( disons que vous créez une application nodejs ), placez simplement votre code dans une
async
fonction anonyme . Voici un exemple:Exemple d'application TS: https://github.com/v-andrew/ts-template
Dans OLD JS, vous devez utiliser
ou
Cependant, avec tous les principaux navigateurs prenant en charge
async
/await
il est obsolète.N'oubliez pas que vous avez besoin d'une
Promise
implémentation lorsque vous compilez vers ES5, où Promise n'est pas disponible nativement.la source
await new Promise(resolve => setTimeout(resolve, 1000)).then(()=>console.log("fired"));
mais cela a fonctionnéawait new Promise(resolve => setTimeout(()=>resolve(), 1000)).then(()=>console.log("fired"));
async
fonction. J'ai ajouté un exempleCela fonctionne: (grâce aux commentaires)
la source
Pour une raison quelconque, la réponse acceptée ci-dessus ne fonctionne pas dans les nouvelles versions d'Angular (V6).
pour cela, utilisez ceci ..
ci-dessus a fonctionné pour moi.
Usage:
OU manière plus précise
la source
Avec
RxJS
:x
vaut 0.Si vous donnez un deuxième argument
period
àtimer
, un nouveau nombre sera émis toutes lesperiod
millisecondes (x = 0 puis x = 1, x = 2, ...).Voir la documentation officielle pour plus de détails.
la source
Si vous utilisez angular5 et supérieur, veuillez inclure la méthode ci-dessous dans votre fichier ts.
puis appelez cette méthode delay () où vous le souhaitez.
par exemple:
Ce message disparaîtra après 3 secondes.
la source
cela fonctionne mieux pour moi
la source
Ou plutôt que de déclarer une fonction, simplement:
la source