Have ideas to improve npm?Join in the discussion! »

    wakeful

    1.0.4 • Public • Published

    wakeful

    CircleCI

    Async sentry that allows a clean breakout from long await when program's state changes.

    It was built for a service that slept long times between activities and needed to be interrupted gracefully.

    What it does: Async timer/sentry asserting predicate at intervals and stops/rejects with an errMsg if predicate returns false otherwise resolves with okMsg after timeMs.

    arguments

    wakeful uses these default arguments:

    • timeMs = 0,

    • options: { predicate: () => true, interval: 1000, okMsg: "ok", errMsg: "err" }

    timeMs = 0 -> means that wakeful will resolve immedietaly,

    • you can use Infinity value if you'd like it to work forever

    predicate -> function that returns boolean; it can check an external condition
    interval -> how often wakeful should check the predicate, default: 1000ms
    errMsg -> message to be triggered on reject(errMsg),
    okMsg -> message to be triggered on resolve(okMsg)

    wakeful supports Browser, Node.js & AMD.

    USAGE

    Refer to index.spec.js for Node.js/jest async tests

    const wakeful = require("wakeful");
     
    let serviceRunning = true;
    // we'll change the state of the service after 6s
    wakeful(6000).then(() => (serviceRunning = false));
     
    // the idea here is to stop the timeout gracefully without exceptions,
    // and exit the loop of the program while it's in "sleep" mode
    (async () => {
        const errMsg = "interruption!"; // custom err message
        const predicate = () => serviceRunning; // all's good until false
        const interval = 1250; // default is 1000ms
        try {
            do {
                process.stdout.write("doing stuff...");
                await wakeful(2500, { predicate, errMsg, interval });
            } while (true);
        } catch (err) {
            if (err === errMsg) {
                process.stdout.write("program terminated gracefully!");
            } else {
                process.stdout.write(err.stack);
            }
        }
    })();
     

    Install

    npm i wakeful

    DownloadsWeekly Downloads

    1

    Version

    1.0.4

    License

    ISC

    Unpacked Size

    10.4 kB

    Total Files

    9

    Last publish

    Collaborators

    • avatar