Ninjas Practicing Multidimensionality

    blend-promise-utils
    TypeScript icon, indicating that this package has built-in type declarations

    1.28.0 • Public • Published

    promise-utils

    Build Status Coverage Status Minzipped size

    Promise-utils is a dependency-free JavaScript/TypeScript library that provides Lodash-like utility functions for dealing with native ES6 promises.

    Installation

    $ npm install blend-promise-utils
    

    Usage Example

    const promiseUtils = require('blend-promise-utils')
    const { promises: fs } = require('fs')
    const request = require('request-promise-native');
    const isEmpty = require('lodash.isempty');
    
    const MS_IN_SECOND = 1000;
    
    async function main() {
      const cachedResponse = promiseUtils.memoize(
        async (contents) => request(contents.url),
        contents => contents.url,
        15 * MS_IN_SECOND // contents could change
      );
    
      const fileContents = await promiseUtils.map(
        ['file1', 'file2', 'file3'],
        async fileName => {
          const rawData = await fs.readFile(fileName);
          return JSON.parse(rawData);
        },
      );
    
      while (true) {
        await promiseUtils.delay(150); // avoid slamming CPU
    
        await promiseUtils.mapSeries(
          fileContents,
          async contents => {
            const remoteData = await cachedResponse(contents);
    
            const { results, errors } = await promiseUtils.settleAll([
              asyncFunction1(),
              asyncFunction2(),
              asyncFunction3(),
            ]);
    
            if (!isEmpty(errors)) {
              throw new Error(`Unable to settle all functions: ${JSON.stringify(errors)}`);
            } else {
              return results;
            }
          }
        )
      }
    
      await promiseUtils.retry(flakyFunction, { maxAttempts: 3, delayMs: 150 })(flakyFunctionArgument);
    
      await promiseUtils.timeout(longFunction, 60 * MS_IN_SECOND)(longFunctionArgument);
    }
    
    main()

    API

    Test

    $ npm test
    

    Documentation

    Build docs

    $ make docs
    

    Push docs to Github

    $ make push-docs
    

    License

    MIT

    Keywords

    none

    Install

    npm i blend-promise-utils

    DownloadsWeekly Downloads

    11,154

    Version

    1.28.0

    License

    MIT

    Unpacked Size

    71.7 kB

    Total Files

    51

    Last publish

    Collaborators

    • eugeneiiim
    • trimble.forest