[解決済み】TypeScriptでsleep関数を実装するには?
質問
Angular 2でTypeScriptを使ったWebサイトを開発しているのですが、その際に
thread.sleep(ms)
機能を提供します。
私のユースケースは、フォームを送信した後、数秒後にユーザーをリダイレクトすることです。これはJavaScriptでは非常に簡単ですが、TypeScriptでそれを行う方法がよくわかりません。
どのように解決するのですか?
でTypeScript 2.0を待つ必要があります。
async
/
await
ES5をサポートするために、TSからES6へのコンパイルにのみサポートされるようになりました。
で遅延関数を作成することができるようになります。
async
:
function delay(ms: number) {
return new Promise( resolve => setTimeout(resolve, ms) );
}
そして、それを呼び出す
await delay(1000);
ちなみに
Promise
を直接指定します。
await new Promise(f => setTimeout(f, 1000));
を使用することができることに注意してください。
await
の中だけです。
async
関数を使用します。
できない場合(
例えば、nodejsアプリケーションを構築しているとします。
を使用する場合は、コードを匿名の
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
OLD JSでは
setTimeout(YourFunctionName, Milliseconds);
または
setTimeout( () => { /*Your Code*/ }, Milliseconds );
しかし、すべての主要なブラウザが
async
/
await
というのは、あまり意味がありません。
更新しました。 TypeScript 2.1が登場し
async/await
.
ただ、忘れてはいけないのは、必要なのは
Promise
の実装は、Promise がネイティブに利用できない ES5 にコンパイルする際に使用されます。
PS
をしなければならない。 関数をエクスポートします。 を、元のファイルの外で使用したい場合。
関連
-
[解決済み] テンプレートパースエラーです。'mat-icon' は既知の要素ではありません。
-
[解決済み] Angular2の$document.ready()に相当します。
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み] ミリ秒単位でスリープ
-
[解決済み] Python プログラムを 50 ミリ秒間スリープさせるにはどうしたらいいですか?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み】TypeScriptのインターフェースと型について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Angular: オブジェクトをサポートしているdiffが見つからない '[object Object]'
-
[解決済み] angularでpreflightのレスポンスがHTTP okステータスにならない
-
[解決済み] Angular EXCEPTION: Http用のプロバイダがありません。
-
[解決済み] Angular2 Router: Error: Cannot find primary outlet to load 'InboxComponent'.
-
[解決済み] NgModule が見つかりませんでした。NgModule でのインポートをスキップするには skip-import オプションを使用します。
-
[解決済み] Angular 8 NgForはArray errorやAcces Control Allow originなどのIterableへのバインディングのみをサポートしています。
-
[解決済み] "rxjs" observable.throw は関数ではありません - Angular4
-
[解決済み] Error.を修正する方法 No value accessor for form control with name' in Angular Unit Test?
-
[解決済み] ブレークポイントの解除 - VS Code | Chrome | Angular
-
[解決済み】JavaScript版sleep()とは?)