make-asynchronous
    TypeScript icon, indicating that this package has built-in type declarations

    0.3.0 • Public • Published

    make-asynchronous

    Make a synchronous function asynchronous by running it in a worker

    This makes it super simple to offload some expensive work without having to deal with the complex Web Workers API.

    Please upvote this Node.js issue 🙏 It would let us reduce the amount of dependencies and simplify the code.

    Works in Node.js and browsers.

    Install

    npm install make-asynchronous

    Usage

    import makeAsynchronous from 'make-asynchronous';
    
    const fn = makeAsynchronous(number => {
    	return performExpensiveOperation(number);
    });
    
    console.log(await fn(2));
    //=> 345342

    API

    makeAsynchronous(function)

    Returns a wrapped version of the given function which executes asynchronously in a background thread (meaning it will not block the main thread).

    The given function is serialized, so you cannot use any variables or imports from outside the function scope. You can instead pass in arguments to the function.

    makeAsynchronousIterable(function)

    Make the iterable returned by a function asynchronous by running it in a worker.

    import {makeAsynchronousIterable} from 'make-asynchronous';
    
    const fn = makeAsynchronousIterable(function * () {
    	yield * performExpensiveOperation(number);
    });
    
    for await (const number of fn(2)) {
    	console.log(number);
    }

    fn.withSignal(signal)

    The function returned by makeAsynchronous and makeAsynchronousIterable has an additional method which allows an AbortSignal to be provided.

    import makeAsynchronous from 'make-asynchronous';
    
    const fn = makeAsynchronous(number => {
    	return performExpensiveOperation(number);
    });
    
    const controller = new AbortController();
    const timeoutId = setTimeout(() => {
    	controller.abort();
    }, 1000); // 1 second timeout
    
    const result = await fn.withSignal(controller.signal)(2);
    clearTimeout(timeoutId);
    
    console.log(result);
    //=> 345342

    Related

    Install

    npm i make-asynchronous

    DownloadsWeekly Downloads

    3

    Version

    0.3.0

    License

    MIT

    Unpacked Size

    12.4 kB

    Total Files

    5

    Last publish

    Collaborators

    • sindresorhus