2016-06-11 19 views
22

Sto sviluppando un sito Web in Angular 2 utilizzando Typescript e mi chiedevo se esistesse un modo per implementare la funzionalità thread.sleep(ms).Dattilografo dattiloscritto

Il mio caso di utilizzo è quello di reindirizzare gli utenti dopo aver inviato un modulo dopo pochi secondi che è molto semplice in html o javascript ma non sono sicuro di come farlo in Typescript.

Molte grazie,

+5

Typescript è un superset di JavaScript. Quindi scrivilo in JavaScript, ed ecco fatto: hai una soluzione TypeScript. –

risposta

31

bisogna aspettare per dattiloscritto 2.0 con async/await per il supporto ES5 come ora supportato solo per TS a ES6 compilazione.

Si sarebbe in grado di creare funzione di ritardo:

function delay(ms: number) { 
    return new Promise(resolve => setTimeout(resolve, ms)); 
} 

e chiamarlo

await delay(300); 

In questo momento è necessario utilizzare

setTimeout(FunctionName, Milisecons); 

o

setTimeout(()=>{/*Your Code*/}, Milisecons); 

Aggiornamento: TypeScript 2.1 è disponibile con async/await.

Basta non dimenticare che è necessaria l'implementazione Promise quando si compila in ES5, dove Promise non è nativamente disponibile.

+1

** Aggiornamento **: il supporto _async/await e generatori per ES5/ES3_ è stato spostato sull'evento TypeScript 2.1 –

+4

senza attendere, è possibile eseguire il ritardo (20000) .then (() => { – ZZZ

10

funziona: (grazie ai commenti)

setTimeout(() => 
{ 
    this.router.navigate(['/']); 
}, 
5000);