JavaScript の忙しい世界では、時間管理が鍵となります。動的 Web アプリケーションを開発していて、一定期間後に関数を実行するか、指定した間隔で関数を繰り返し実行する必要があると想像してください。ここで setTimeout と setInterval が役に立ちます。これら 2 つの関数を使用すると、開発者はコード実行のタイミングを制御でき、Web アプリケーションをより対話的で応答性の高いものにすることができます。このブログでは、setTimeout と setInterval について詳しく説明し、魅力的な例を通じてその使用法を探り、それらを使った async/await の使用方法について説明します。
setTimeout は、タイマーを設定する JavaScript 関数で、タイマーが期限切れになると関数または指定されたコード部分を実行します。これは、非同期操作を管理するための基本的なツールです。
setTimeout(function, delay, arg1, arg2, ...);
簡単な例から始めましょう。料理をしていて、5 秒以内にオーブンを確認するようリマインダーが必要な場合を想像してください。
function checkOven() { console.log("Time to check the oven!"); } setTimeout(checkOven, 5000); // 5000 milliseconds = 5 seconds
この例では、checkOven 関数は 5 秒後に 1 回実行されます。
setInterval は、関数または指定されたコード部分を繰り返し実行するタイマーを設定する JavaScript 関数です。各呼び出しの間に一定の遅延時間を設けます。
setInterval(function, delay, arg1, arg2, ...);
料理シナリオを強化しましょう。スープを 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
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 は Promise ベースの関数ではありませんが、Promise でラップすることで async や await で使用できます。
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 が解決されるまで実行を一時停止します。
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 サイトの他の関連記事を参照してください。