ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の sleep() メソッドについて話しましょう

JavaScript の sleep() メソッドについて話しましょう

coldplay.xixi
coldplay.xixi転載
2020-06-18 16:14:282369ブラウズ

JavaScript の sleep() メソッドについて話しましょう

多くのプログラミング言語には sleep()delay() などのメソッドがあり、プログラムの不安を軽減できます。次のステップに進みますが、遅らせてしばらく待ちます。ソフトウェア開発では、イベントが発生したかどうかを確認するために数分間待つなど、このような機能が必要な機能に遭遇することがあります。 JavaScript には、タスクを実行するための一定期間を設定する setTimeout() メソッドがありますが、このメソッドの記述は非常に醜く、コールバック関数が必要です:

setTimeout(function(){ alert("Hello"); }, 3000);

JavaScript Promise APIは新しい API です。Promise の助けを借りて、setTimeout 関数を改善できます。以下は、setTimeout()sleep() にカプセル化するものです。 Promiseを返す関数。

// https://zeit.co/blog/async-and-await
function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

// 用法
sleep(500).then(() => {
    // 这里写sleep之后需要去做的事情
})

この書き方は、他のプログラミング言語の遅延関数や待機関数とよく似ていて、非常に洗練されていることがわかります。 Promise API を使用すると、コールバック関数の受け渡しを回避でき、実装では ES6 のアロー関数も使用します。

ここで言及する必要がある問題の 1 つは、この sleep() が実行中に「ブロック」プログラムを実行し続けることです。同期ではありません。後続のコードの実行に影響を与えずに同期的に実行したい場合は、 async/await キーワードを使用できます。

(async function() {
  console.log('Do some thing, ' + new Date());
  await sleep(3000);
  console.log('Do other things, ' + new Date());
})();

実行結果:

Do some thing, Mon Feb 23 2015 21:52:11 GMT+0800 (CST)  
Do other things, Mon Feb 23 2015 21:52:14 GMT+0800 (CST)

今回は、sleep() が 2 番目の console の実行を妨げないことがわかります。

ただし、 async/await は ES7 の構文であり、まだ実験段階にあります。この async/await 機能を今すぐ使用したい場合はどうすればよいですか? Google の JavaScript プリコンパイラーである Traceur を試してみると、JavaScript の上位バージョンを ES5 コードにコンパイルでき、async/await を実験的にサポートしています (これを指定するには、-experimental を使用する必要があります)。

推奨チュートリアル: 「JavaScript 基本チュートリアル

以上がJavaScript の sleep() メソッドについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はwebhek.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。