次の行を実行する前に5秒待つ 質問する

次の行を実行する前に5秒待つ 質問する

以下の関数は期待どおりに動作しません。JS 初心者なので、その理由がわかりません。

newStateかどうかを確認する前に 5 秒待つ必要があります-1

現在は待機せず、すぐにチェックします。

function stateChange(newState) {
  setTimeout('', 5000);

  if(newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
}

ベストアンサー1

ブラウザ

新しい ソリューションはこちら 非同期/待機構文。

必ず確認してくださいブラウザのサポートこれは ECMAScript 6 で導入された言語機能です。

効用関数:

const delay = ms => new Promise(res => setTimeout(res, ms));

使用法:

const yourFunction = async () => {
  await delay(5000);
  console.log("Waited 5s");

  await delay(5000);
  console.log("Waited an additional 5s");
};

このアプローチの利点は、コードが同期コードのように見え、動作するようになることです。

Node.js

setTimeoutNode.js 16では、Promise ベースの組み込みバージョンが提供されているため、独自のユーティリティ関数を作成する必要がありません。

import { setTimeout } from "timers/promises";

const yourFunction = async () => {
  await setTimeout(5000);
  console.log("Waited 5s");

  await setTimeout(5000);
  console.log("Waited an additional 5s");
};

⚠️ 念のため言っておきますが、競合状態を回避するために wait 関数を使用したくなるかもしれません (たとえば、非同期コードをテストするとき)。これはめったに良い考えではありません。

おすすめ記事