setTimeout関数でタイマーを作る
一定時間後に関数を実行する目的で、setTimeout関数を使うと思います。
しかし、逐次処理を行いたいのに、非同期処理で実行されると思ったように動かないことがあります。
非同期処理ではPromiseやasync/awaitを使うことで逐次処理を行えます。
ここではタイマーとしての使い方について、使い方を書いておきます。
・Promiseやasync/await詳しくは以下を参照ください。
- JavaScript Promiseの本
- 十六章第五回 Promise — JavaScript初級者から中級者になろう — uhyohyo.net
- 十六章第二十一回 async/await — JavaScript初級者から中級者になろう — uhyohyo.net
環境
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();