しかし、setTimeout関数は非同期であるため、そのままではawaitキーワードと組み合わせて使用することができません。awaitはPromiseオブジェクトを返す関数と一緒に使用されることが前提となっています。
以下に、setTimeout関数とawaitを組み合わせて使用するためのいくつかの方法とコード例を示します。
-
Promiseを使った方法:
function delay(ms) { return new Promise((resolve) => { setTimeout(resolve, ms); }); } async function myFunction() { console.log("処理開始"); await delay(2000); // 2秒待つ console.log("処理終了"); } myFunction();
-
setTimeoutをラップしたPromiseを使った方法:
function delay(ms) { return new Promise((resolve) => { setTimeout(resolve, ms); }); } async function myFunction() { console.log("処理開始"); await new Promise((resolve) => setTimeout(resolve, 2000)); // 2秒待つ console.log("処理終了"); } myFunction();
-
setTimeoutを使わずに待機する方法:
function wait(ms) { return new Promise((resolve) => { setTimeout(resolve, ms); }); } async function myFunction() { console.log("処理開始"); await wait(2000); // 2秒待つ console.log("処理終了"); } myFunction();
以上の方法を使用すると、setTimeout関数とawaitを組み合わせて非同期処理を制御することができます。適切な方法を選択し、プログラムの要件に応じて使用してください。