https://github.com/cachecontrol/promise-any-series
Execute promises in series, testing if any of the results satisfies a condition.
https://github.com/cachecontrol/promise-any-series
Last synced: 8 months ago
JSON representation
Execute promises in series, testing if any of the results satisfies a condition.
- Host: GitHub
- URL: https://github.com/cachecontrol/promise-any-series
- Owner: CacheControl
- License: mit
- Created: 2015-04-18T14:01:12.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2015-10-26T00:19:30.000Z (over 10 years ago)
- Last Synced: 2025-10-13T04:12:15.631Z (8 months ago)
- Language: JavaScript
- Homepage:
- Size: 152 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Promise Any Series
[](http://standardjs.com/)
Given an array of methods that return promises, execute in series and return true if any satisfy a test.
This library is useful when having a set of prioritized promises to check, and you'd like to test the fast(cheap) calls first, short circuiting after the first one to pass a test.
For example, if you needed to check several conditions, involving synchronous code(fast), local database calls(less fast), and third party services(slow), you'd want to execute the fast one first, followed by the slower ones, and so forth.
## Installation
```$ npm install promise-any-series```
## Basic Usage
```javascript
var anySeries = require('promise-any-series');
var superFast = function() {
return new Promise(function(resolve, reject) {
console.log('superFast ran!');
resolve('foo');
});
};
var sortaSlow = function() {
return new Promise(function(resolve, reject) {
console.log('sortaSlow ran!');
resolve(100);
});
};
var superDuperSlow = function() {
return new Promise(function(resolve, reject) {
console.log('superDuperSlow ran!');
resolve('bar');
});
};
anySeries([superFast, sortaSlow, superDuperSlow], function(value) {
return typeof value == 'number'; //the first promise to pass the test will immediately resolve true
}).then( (result) => {
console.log(result);
});
```
This will print:
```javascript
superFast ran! //does not pass test
sortaSlow ran! //passes test
true //note that superDuperSlow did not run
```
## Inputs
Empty arrays or failing to provide a valid callback immediately resolve as false.
```javascript
anySeries([]).then(function(data) {
console.log(results); //false
});
```
This will print:
```javascript
false
```