備忘録

Windows,Linux,Mac,AWS,VMware,ネットワークなどの検証

setTimeout関数でタイマーを作る

一定時間後に関数を実行する目的で、setTimeout関数を使うと思います。
しかし、逐次処理を行いたいのに、非同期処理で実行されると思ったように動かないことがあります。

非同期処理ではPromiseやasync/awaitを使うことで逐次処理を行えます。
ここではタイマーとしての使い方について、使い方を書いておきます。

・Promiseやasync/await詳しくは以下を参照ください。

環境

node.js v8.9.3

async/awaitを使った例

// t秒間待機する
function wait(t){
  return new Promise(resolve => {
    setTimeout(resolve, t * 1000);
  });
}

// Hello →(5秒待機) → World!
async function main(){
  console.log('Hello');
  await wait(5);
  console.log('World!');
}

main();

Promiseを使った例

// t秒間待機する
function wait(t){
  return new Promise(resolve => {
    setTimeout(resolve, t * 1000);
  });
}

// Hello →(5秒待機) → World!
function main(){
  console.log('Hello');
  wait(5)
  .then(() => {
    console.log('World!');
  });
}

main();