1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
|
# `asyncro` [](https://www.npmjs.org/package/asyncro) [](https://travis-ci.org/developit/asyncro)
The same `map()`, `reduce()` & `filter()` you know and love, but with async iterator functions!
Do `fetch()` networking in loops, resolve Promises, anything async goes. Performance-friendly _by default_.
**Here's what it looks like:**
<img src="https://i.imgur.com/GcykVyN.png" width="404" alt="Asyncro Example">
* * *
## What's in the Box
<img src="https://i.imgur.com/yiiq6Gx.png" width="275" alt="Asyncro Example 2">
* * *
## Installation
```sh
npm install --save asyncro
```
## Import and Usage Example
```js
import { map } from 'asyncro';
async function example() {
return await map(
['foo', 'bar', 'baz'],
async name => fetch('./'+name)
)
}
```
## API
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
### reduce
Invoke an async reducer function on each item in the given Array,
where the reducer transforms an accumulator value based on each item iterated over.
**Note:** because `reduce()` is order-sensitive, iteration is sequential.
> This is an asynchronous version of `Array.prototype.reduce()`
**Parameters**
- `array` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)** The Array to reduce
- `reducer` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** Async function, gets passed `(accumulator, value, index, array)` and returns a new value for `accumulator`
- `accumulator` **\[any]** Optional initial accumulator value
**Examples**
```javascript
await reduce(
['/foo', '/bar', '/baz'],
async (accumulator, value) => {
accumulator[v] = await fetch(value);
return accumulator;
},
{}
);
```
Returns **any** final `accumulator` value
### map
Invoke an async transform function on each item in the given Array **in parallel**,
returning the resulting Array of mapped/transformed items.
> This is an asynchronous, parallelized version of `Array.prototype.map()`.
**Parameters**
- `array` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)** The Array to map over
- `mapper` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** Async function, gets passed `(value, index, array)`, returns the new value.
**Examples**
```javascript
await map(
['foo', 'baz'],
async v => await fetch(v)
)
```
Returns **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)** resulting mapped/transformed values.
### filter
Invoke an async filter function on each item in the given Array **in parallel**,
returning an Array of values for which the filter function returned a truthy value.
> This is an asynchronous, parallelized version of `Array.prototype.filter()`.
**Parameters**
- `array` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)** The Array to filter
- `filterer` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** Async function. Gets passed `(value, index, array)`, returns true to keep the value in the resulting filtered Array.
**Examples**
```javascript
await filter(
['foo', 'baz'],
async v => (await fetch(v)).ok
)
```
Returns **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)** resulting filtered values
### find
Invoke an async function on each item in the given Array **in parallel**,
returning the first element predicate returns truthy for.
> This is an asynchronous, parallelized version of `Array.prototype.find()`.
**Parameters**
- `array` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)** The Array to find
- `predicate` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** Async function. Gets passed `(value, index, array)`, returns true to be the find result.
**Examples**
```javascript
await find(
['foo', 'baz', 'root'],
async v => (await fetch(v)).name === 'baz'
)
```
Returns **any** resulting find value
### every
Checks if predicate returns truthy for **all** elements of collection **in parallel**.
> This is an asynchronous, parallelized version of `Array.prototype.every()`.
**Parameters**
- `array` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)** The Array to iterate over.
- `predicate` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** Async function. Gets passed `(value, index, array)`, The function invoked per iteration.
**Examples**
```javascript
await every(
[2, 3],
async v => (await fetch(v)).ok
)
```
Returns **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** Returns true if **all** element passes the predicate check, else false.
### some
Checks if predicate returns truthy for **any** element of collection **in parallel**.
> This is an asynchronous, parallelized version of `Array.prototype.some()`.
**Parameters**
- `array` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)** The Array to iterate over.
- `filterer` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** Async function. Gets passed `(value, index, array)`, The function invoked per iteration.
**Examples**
```javascript
await some(
['foo', 'baz'],
async v => (await fetch(v)).ok
)
```
Returns **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** Returns true if **any** element passes the predicate check, else false.
### parallel
Invoke all async functions in an Array or Object **in parallel**, returning the result.
**Parameters**
- `list` **([Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)> | [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)<[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)>)** Array/Object with values that are async functions to invoke.
**Examples**
```javascript
await parallel([
async () => await fetch('foo'),
async () => await fetch('baz')
])
```
Returns **([Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object))** same structure as `list` input, but with values now resolved.
### series
Invoke all async functions in an Array or Object **sequentially**, returning the result.
**Parameters**
- `list` **([Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)> | [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)<[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)>)** Array/Object with values that are async functions to invoke.
**Examples**
```javascript
await series([
async () => await fetch('foo'),
async () => await fetch('baz')
])
```
Returns **([Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object))** same structure as `list` input, but with values now resolved.
## License
[MIT](https://oss.ninja/mit/developit)
|