File: README.md

package info (click to toggle)
node-neo-async 2.6.2%2B~cs3.0.0-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 3,460 kB
  • sloc: javascript: 30,370; makefile: 18
file content (224 lines) | stat: -rw-r--r-- 8,036 bytes parent folder | download | duplicates (2)
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` [![NPM](https://img.shields.io/npm/v/asyncro.svg?style=flat)](https://www.npmjs.org/package/asyncro) [![travis-ci](https://travis-ci.org/developit/asyncro.svg?branch=master)](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)&lt;[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)&lt;[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)&lt;[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)&lt;[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)