Il faut attendre TypeScript 2.0 avec async
/ await
pour la prise en charge d'ES5, car elle n'est désormais prise en charge que pour la compilation de TS à ES6.
Vous pouvez créer une fonction de retardement avec async
:
function delay(ms: number) {
return new Promise( resolve => setTimeout(resolve, ms) );
}
Et l'appeler
await delay(1000);
BTW, vous pouvez attendre sur Promise
directement :
await new Promise(f => setTimeout(f, 1000));
Veuillez noter que vous pouvez utiliser await
uniquement à l'intérieur async
fonction.
Si vous ne pouvez pas ( Imaginons que vous construisiez une application nodejs ), il suffit de placer votre code dans le fichier anonyme async
fonction. Voici un exemple :
(async () => {
// Do something before delay
console.log('before delay')
await delay(1000);
// Do something after
console.log('after delay')
})();
Exemple d'application TS : https://github.com/v-andrew/ts-template
Dans OLD JS, vous devez utiliser
setTimeout(YourFunctionName, Milliseconds);
ou
setTimeout( () => { /*Your Code*/ }, Milliseconds );
Toutefois, comme tous les principaux navigateurs prennent en charge les async
/ await
il est moins utile.
Mise à jour : TypeScript 2.1 est disponible avec async/await
.
N'oubliez pas que vous avez besoin Promise
lorsque vous compilez en ES5, où Promise n'est pas disponible nativement.
PS
Vous devez exporter la fonction si vous souhaitez l'utiliser en dehors du fichier original.
12 votes
Typescript est un surensemble de JavaScript. Il suffit donc de l'écrire en JavaScript pour obtenir une solution TypeScript.
0 votes
Les choses se sont simplifiées depuis la première réponse à cette question. Voir aussi stackoverflow.com/a/39914235/328817