Skip to content
/ sleep-ts Public

😴 Pause JavaScript execution using Promises and flexible time formats

License

Notifications You must be signed in to change notification settings

dguo/sleep-ts

Repository files navigation

sleep-ts

npm license bundle size CI status test coverage known vulnerabilities

Pause JavaScript execution for a specified amount of time using Promises. Works elegantly with async/await and accepts flexible time formats like '3s' and '1h' (any string that can be parsed by the ms package). Implemented in TypeScript.

Installation

$ yarn add sleep-ts
# or
$ npm install --save sleep-ts

Usage

import {sleep} from 'sleep-ts';
// or
const sleep = require('sleep-ts').sleep;

// With async/await
(async function slowHelloWorld() {
    console.log('Hello');

    // a number argument is treated as milliseconds, so this will
    // sleep for 1 second
    await sleep(1000);

    // a string argument is parsed, so this will sleep for 2 seconds
    await sleep('2s');

    console.log('World');
})()

// With raw Promises
sleep(4000).then(() => {
    console.log('PING');

    // If you pass a second argument, the sleep Promise will
    // resolve with the given value.
    return sleep(3000, 'PONG');
}).then(response => {
    console.log(response);
});

Output:

Hello
# 3 seconds later
World
# 1 second later
PING
# 3 seconds later
PONG

Alternatives

  • If you don't care about the fancy time format parsing, you can use sleep-promise, which might save you a subdependency on the ms package.
  • Use setTimeout if you're okay with using callbacks.

Other Languages

License

MIT