TypeScript を使用して Angular 2 で Web サイトを開発していますが、機能を実装する方法があるかどうか知りたいですthread.sleep(ms)
。
私のユースケースは、フォームを送信してから数秒後にユーザーをリダイレクトすることです。これは JavaScript では非常に簡単ですが、TypeScript でどのように実行すればよいかわかりません。
ベストアンサー1
現在は TS から ES6 へのコンパイルのみがサポートされているため、ES5 のサポートについてはasync
TypeScript 2.0 を待つ必要があります。await
次のようにして遅延関数を作成できますasync
。
function delay(ms: number) {
return new Promise( resolve => setTimeout(resolve, ms) );
}
そしてそれを呼び出す
await delay(1000);
ちなみに、Promise
直接 await することもできます:
await new Promise(f => setTimeout(f, 1000));
関数await
内でのみ使用できることに注意してください。async
それができない場合 (たとえば、Node.js アプリケーションを構築している場合)、匿名関数にコードを配置しますasync
。次に例を示します。
(async () => {
// Do something before delay
console.log('before delay')
await delay(1000);
// Do something after
console.log('after delay')
})();
TS アプリケーションの例:https://github.com/v-andrew/ts-template
古いJSでは、
setTimeout(YourFunctionName, Milliseconds);
または
setTimeout( () => { /*Your Code*/ }, Milliseconds );
ただし、すべての主要ブラウザがasync
/ をサポートしているためawait
、あまり役に立ちません。
更新: TypeScript 2.1 がリリースされました
async/await
。
Promise
Promise がネイティブで利用できない ES5 にコンパイルするときには実装が必要であることを忘れないでください。
追伸
あなたがしなければならない関数をエクスポートする元のファイル以外で使用する場合。