Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Lodash-like, dependency-free utilities for native ES6 promises.

License

NotificationsYou must be signed in to change notification settings

blend/promise-utils

Repository files navigation

Build StatusCoverage StatusMinzipped size

Promise-utils is a dependency-free JavaScript/TypeScript library thatprovides Lodash-like utility functions for dealing with native ES6promises.

Installation

$ npm install blend-promise-utils

Usage Example

constpromiseUtils=require('blend-promise-utils')const{promises:fs}=require('fs')constrequest=require('request-promise-native');constisEmpty=require('lodash.isempty');constMS_IN_SECOND=1000;asyncfunctionmain(){constcachedResponse=promiseUtils.memoize(async(contents)=>request(contents.url),contents=>contents.url,15*MS_IN_SECOND// contents could change);constfileContents=awaitpromiseUtils.map(['file1','file2','file3'],asyncfileName=>{constrawData=awaitfs.readFile(fileName);returnJSON.parse(rawData);},);while(true){awaitpromiseUtils.delay(150);// avoid slamming CPUawaitpromiseUtils.mapSeries(fileContents,asynccontents=>{constremoteData=awaitcachedResponse(contents);const{ results, errors}=awaitpromiseUtils.settleAll([asyncFunction1(),asyncFunction2(),asyncFunction3(),]);if(!isEmpty(errors)){thrownewError(`Unable to settle all functions:${JSON.stringify(errors)}`);}else{returnresults;}})}awaitpromiseUtils.retry(flakyFunction,{maxAttempts:3,delayMs:150})(flakyFunctionArgument);awaitpromiseUtils.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


[8]ページ先頭

©2009-2025 Movatter.jp