検索
ホームページウェブフロントエンドjsチュートリアルJavaScript の「setTimeout」と「setInterval」をマスターする

Mastering `setTimeout` and `setInterval` in JavaScript

JavaScript の忙しい世界では、時間管理が鍵となります。動的 Web アプリケーションを開発していて、一定期間後に関数を実行するか、指定した間隔で関数を繰り返し実行する必要があると想像してください。ここで setTimeout と setInterval が役に立ちます。これら 2 つの関数を使用すると、開発者はコード実行のタイミングを制御でき、Web アプリケーションをより対話的で応答性の高いものにすることができます。このブログでは、setTimeout と setInterval について詳しく説明し、魅力的な例を通じてその使用法を探り、それらを使った async/await の使用方法について説明します。

setTimeout の基本

setTimeoutとは何ですか?

setTimeout は、タイマーを設定する JavaScript 関数で、タイマーが期限切れになると関数または指定されたコード部分を実行します。これは、非同期操作を管理するための基本的なツールです。

setTimeoutの構文

setTimeout(function, delay, arg1, arg2, ...);
  • function: タイマーの期限切れ後に実行される関数。
  • 遅延: 関数が実行されるまでの時間 (ミリ秒)。
  • arg1、arg2、...: 関数に渡される追加の引数。

例: 単純な setTimeout

簡単な例から始めましょう。料理をしていて、5 秒以内にオーブンを確認するようリマインダーが必要な場合を想像してください。

function checkOven() {
    console.log("Time to check the oven!");
}

setTimeout(checkOven, 5000); // 5000 milliseconds = 5 seconds

この例では、checkOven 関数は 5 秒後に 1 回実行されます。

setInterval の基本

setIntervalとは何ですか?

setInterval は、関数または指定されたコード部分を繰り返し実行するタイマーを設定する JavaScript 関数です。各呼び出しの間に一定の遅延時間を設けます。

setIntervalの構文

setInterval(function, delay, arg1, arg2, ...);
  • function: 繰り返し実行される関数。
  • 遅延: 各関数の実行間のミリ秒単位の時間。
  • arg1、arg2、...: 関数に渡される追加の引数。

例: 単純な setInterval

料理シナリオを強化しましょう。スープを 2 秒ごとにかき混ぜる必要があるとします。

function stirSoup() {
    console.log("Stirring the soup...");
}

setInterval(stirSoup, 2000); // 2000 milliseconds = 2 seconds

この例では、stirSoup 関数は 2 秒ごとに実行されます。

タイマーのクリア

クリアタイムアウト

setTimeout の実行を停止するには、clearTimeout を使用します。

let timerId = setTimeout(checkOven, 5000);

// Cancel the timer
clearTimeout(timerId);

クリア間隔

setInterval の繰り返しを停止するには、clearInterval を使用します。

let intervalId = setInterval(stirSoup, 2000);

// Cancel the interval
clearInterval(intervalId);

例による高度な使用法

関数に引数を渡す

setTimeout と setInterval は両方とも、実行中の関数に引数を渡すことができます。

function greet(name) {
    console.log(`Hello, ${name}!`);
}

setTimeout(greet, 3000, "Alice"); // Outputs "Hello, Alice!" after 3 seconds

定期的なタスクのネストされた setTimeout

setInterval を使用する代わりに、ネストされた setTimeout を使用して、繰り返しタスクをより正確に制御できます。

function fetchData() {
    console.log("Fetching data...");

    setTimeout(fetchData, 2000); // Recursively call fetchData every 2 seconds
}

fetchData();

ストーリー: デジタルキッチンタイマー

デジタル キッチン タイマー アプリを構築していると想像してください。ユーザーは、さまざまな調理タスクに対して複数のタイマーを設定できます。 setTimeout と setInterval を使用すると、これらのタイマーを効率的に管理できます。

class KitchenTimer {
    constructor() {
        this.timers = [];
    }

    addTimer(name, duration) {
        let timerId = setTimeout(() => {
            console.log(`${name} timer done!`);
            this.removeTimer(timerId);
        }, duration);

        this.timers.push({ name, timerId });
        console.log(`${name} timer set for ${duration / 1000} seconds.`);
    }

    removeTimer(timerId) {
        this.timers = this.timers.filter(timer => timer.timerId !== timerId);
    }

    clearAllTimers() {
        this.timers.forEach(timer => clearTimeout(timer.timerId));
        this.timers = [];
        console.log("All timers cleared.");
    }
}

let myKitchen = new KitchenTimer();
myKitchen.addTimer("Pasta", 5000);
myKitchen.addTimer("Cake", 10000);

setTimeout(() => {
    myKitchen.clearAllTimers();
}, 8000); // Clear all timers after 8 seconds

setTimeout での async と await の使用

setTimeout は Promise ベースの関数ではありませんが、Promise でラップすることで async や await で使用できます。

例: Promise での setTimeout のラップ

function delay(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function asyncTask() {
    console.log("Task started...");
    await delay(2000);
    console.log("Task completed after 2 seconds.");
}

asyncTask();

この例では、遅延関数は、指定された遅延後に解決される Promise を返します。 asyncTask 関数は await を使用して、Promise が解決されるまで実行を一時停止します。

setInterval での async と await の使用

async および await を使用した setInterval の処理は、遅延を繰り返し待機する方法が必要となるため、より複雑です。

例: async と await を使用した setInterval のシミュレーション

function delay(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function asyncIntervalTask() {
    while (true) {
        console.log("Interval task executing...");
        await delay(2000);
    }
}

asyncIntervalTask();

この例では、asyncIntervalTask​​ 関数は、遅延関数で await を指定した while ループを使用して、繰り返しタスクをシミュレートします。

結論

setTimeout と setInterval を理解して習得することは、JavaScript 開発者にとって非常に重要です。これらの関数は、アプリケーションのタイミングと非同期操作を管理するための強力な方法を提供します。これらの機能を活用することで、よりインタラクティブで動的な Web エクスペリエンスを作成できます。さらに、これらを async および await と統合することで、非同期コードの制御と明確さをさらに高めることができます。

デジタル キッチン タイマーを構築している場合でも、正確なタイミングが必要なその他のアプリケーションを構築している場合でも、setTimeout と setInterval は JavaScript ツールキットの重要なツールです。コーディングを楽しんでください!

以上がJavaScript の「setTimeout」と「setInterval」をマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンの理解:実装の詳細JavaScriptエンジンの理解:実装の詳細Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:学習曲線と使いやすさPython vs. JavaScript:学習曲線と使いやすさApr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソースPython vs. JavaScript:コミュニティ、ライブラリ、リソースApr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへ:すべてがどのように機能するかC/CからJavaScriptへ:すべてがどのように機能するかApr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。