JavaScriptで秒後に実行する5つの方法 – Japanシーモア

JavaScriptで秒後に実行する5つの方法

JavaScriptで秒後に実行する方法を学ぶイメージJS
この記事は約7分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

このサービスは複数のSSPによる協力の下、運営されています。

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、JavaScriptで秒後に実行する方法が5つマスターできるようになります。

初心者目線で徹底解説し、サンプルコードや注意点、カスタマイズ方法も網羅しています。

これを読めば、あなたもJavaScriptで秒後に実行するプロになれるでしょう。

●JavaScriptで秒後に実行する基本

JavaScriptで秒後に実行する方法として、まずは基本となるsetTimeoutとsetIntervalを紹介します。

○setTimeout

setTimeoutは、指定した時間が経過した後に一度だけ実行する関数です。

// このコードではsetTimeoutを使って3秒後にメッセージを表示するコードを紹介しています。
// この例では、3秒後にコンソールに"こんにちは、世界!"と表示しています。
function helloWorld() {
  console.log("こんにちは、世界!");
}

setTimeout(helloWorld, 3000); // 3秒後にhelloWorld関数を実行

setTimeoutは、第1引数に実行する関数を、第2引数に待機時間(ミリ秒)を指定します。

上記の例では、3000ミリ秒(3秒)後にhelloWorld関数を実行しています。

○setInterval

setIntervalは、指定した時間ごとに繰り返し実行する関数です。

// このコードではsetIntervalを使って5秒ごとにメッセージを表示するコードを紹介しています。
// この例では、5秒ごとにコンソールに"こんにちは、世界!"と表示しています。
function helloWorld() {
  console.log("こんにちは、世界!");
}

setInterval(helloWorld, 5000); // 5秒ごとにhelloWorld関数を実行

setIntervalも、第1引数に実行する関数を、第2引数に待機時間(ミリ秒)を指定します。

上記の例では、5000ミリ秒(5秒)ごとにhelloWorld関数を繰り返し実行しています。

●JavaScriptで秒後に実行する応用例

ここでは、PromiseとsetTimeout、Async/AwaitとsetTimeoutを組み合わせた応用例を紹介します。

○PromiseとsetTimeout

Promiseを使って、setTimeoutをより簡潔に書く方法を紹介します。

この例では、2秒後にメッセージを表示するコードを紹介しています。

// このコードではPromiseとsetTimeoutを使って2秒後にメッセージを表示するコードを紹介しています。
// この例では、2秒後にコンソールに"こんにちは、世界!"と表示しています。
function delay(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

async function helloWorld() {
  await delay(2000); // 2秒間待機
  console.log("こんにちは、世界!");
}

helloWorld();

delay関数は、指定したミリ秒後にPromiseを解決する関数です。

helloWorld関数内でawaitを使って、delay関数が終了するまで待機しています。

○Async/AwaitとsetTimeout

Async/Awaitを使って、setTimeoutをさらに分かりやすく書く方法を紹介します。

この例では、1秒後にメッセージを表示するコードを紹介しています。

// このコードではAsync/AwaitとsetTimeoutを使って1秒後にメッセージを表示するコードを紹介しています。
// この例では、1秒後にコンソールに"こんにちは、世界!"と表示しています。
function delay(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

async function helloWorld() {
  await delay(1000); // 1秒間待機
  console.log("こんにちは、世界!");
}

helloWorld();

この例でも、delay関数を使って指定したミリ秒後にPromiseを解決し、helloWorld関数内でawaitを使って待機しています。

●注意点と対処法

setTimeoutやsetIntervalを使用する際には、次の注意点があります。

  1. ブラウザがバックグラウンドにある場合、タイマーの実行が遅れることがあります。
    これを解決するには、Web Workersを使用することができます。
  2. setTimeoutやsetIntervalのコールバック関数内で、外部変数に依存すると予期しない結果が発生することがあります。
    コールバック関数内で必要な変数は、引数で渡すかクロージャを使用してください。

●カスタマイズ方法

JavaScriptで秒後に実行する方法をカスタマイズする際には、次の方法があります。

  1. 複数のタイマーを連続して実行する
  2. リアルタイムな更新が必要な場合、requestAnimationFrameを使う

それぞれの方法について、サンプルコードとともに解説していきます。

○複数のタイマーを連続して実行する

この例では、複数のタイマーを連続して実行するコードを紹介しています。

1秒後に”1秒経過”、2秒後に”2秒経過”と表示しています。

// このコードでは、複数のタイマーを連続して実行するコードを紹介しています。
// この例では、1秒後に"1秒経過"、2秒後に"2秒経過"と表示しています。

function timer1() {
  setTimeout(() => {
    console.log('1秒経過');
  }, 1000);
}

function timer2() {
  setTimeout(() => {
    console.log('2秒経過');
  }, 2000);
}

timer1();
timer2();

○リアルタイムな更新が必要な場合、requestAnimationFrameを使う

この例では、requestAnimationFrameを使ってリアルタイムなアニメーションを実行するコードを紹介しています。

円が右へ移動するアニメーションを行っています。

// このコードでは、requestAnimationFrameを使ってリアルタイムなアニメーションを実行するコードを紹介しています。
// この例では、円が右へ移動するアニメーションを行っています。

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let xPos = 0;

function drawCircle() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.beginPath();
  ctx.arc(xPos, 50, 20, 0, Math.PI * 2);
  ctx.fillStyle = 'blue';
  ctx.fill();
  ctx.closePath();

  xPos += 1;
  requestAnimationFrame(drawCircle);
}

drawCircle();

このコードでは、requestAnimationFrameを使って円が右へ移動するアニメーションを実行しています。

drawCircle関数は、円を描画してxPosを1増やし、再度requestAnimationFrameで自分自身を呼び出すことでアニメーションを繰り返しています。

まとめ

この記事では、JavaScriptで秒後に実行する方法を紹介しました。

基本的な使い方としてsetTimeoutとsetIntervalがあり、さらに応用例としてPromiseとsetTimeoutやAsync/AwaitとsetTimeoutを組み合わせた方法を紹介しました。

また、注意点と対処法、カスタマイズ方法についても触れました。

タイマー関数をうまく活用することで、さまざまなシチュエーションでの処理を効果的に実行できます。

これらのポイントをマスターすれば、JavaScriptで秒後に実行する処理を効果的に実現できるようになります。

ぜひ、実際のプロジェクトで活用してみてください。