JavaScriptでsleep (setTimeout + Promise)
[2024-01-28追記] Node.jsの場合、v15以降なら timersPromises.setTimeout でできます。
const { setTimeout } = require('timers/promises');
(async() => {
console.time();
await setTimeout(3000);
console.timeEnd();
// -> default: 3.004s
})();
import { setTimeout } from 'timers/promises';
それ以外の場合、Promise化した setTimeout()
でsleepのようなことができます。普通に .then()
で使ってもただの setTimeout()
でしかないので、await
をつけて呼びます。
/**
* sleepもどき
* @param {Number} ms ミリ秒
* @returns {Promise}
*/
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
(async() => {
console.time();
await sleep(3000);
console.timeEnd();
// -> default: 3002.119140625 ms
})();
const sleep = (ms: number): Promise<void> => new Promise(resolve => setTimeout(resolve, ms));