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
delaylibrary. - 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)