A tiny Promise
wrapper around setTimeout
for JavaScript.
Returns a Promise
and resolve it after a specific amount of time.
- Only 45 bytes (minified and gzipped),
10 times smaller than
delay
library. - Has good ES modules and TypeScript support.
import { delay } from 'nanodelay'
async function foo () {
await delay(300)
// Executed after 300 milliseconds
}
delay(300).then(() => {
// Executed after 300 milliseconds
})
The second argument will be used in Promise
as resolved value
(useful to pass variables between scopes):
createClient().then(client => {
expect(client).toBeOK
return delay(50, client)
}).then(client => {
expect(client).toBeConnected()
})
For quick hacks you can load Nano Delay from CDN. Do not use it in production because of low performance.
import { delay } from 'https://cdn.jsdelivr.net/npm/nanodelay/index.js'
Node.js 16+ has built-in Promise-based setTimeout
. After January 2023
you can remove nanodelay
from your dependencies.
import { setTimeout } from 'timers/promises'
await setTimeout(5000)