Skip to content

Commit dc597e5

Browse files
authored
Add missing index parameter to mapper function in pMapIterable (#71)
1 parent 34006c9 commit dc597e5

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

index.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ export function pMapIterable(
193193
const promises = [];
194194
let runningMappersCount = 0;
195195
let isDone = false;
196+
let index = 0;
196197

197198
function trySpawn() {
198199
if (isDone || !(runningMappersCount < concurrency && promises.length < backpressure)) {
@@ -212,7 +213,7 @@ export function pMapIterable(
212213
trySpawn();
213214

214215
try {
215-
const returnValue = await mapper(await value);
216+
const returnValue = await mapper(await value, index++);
216217

217218
runningMappersCount--;
218219

test.js

+25
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,16 @@ const mapper = async ([value, ms]) => {
5959
return value;
6060
};
6161

62+
const mapperWithIndex = async ([value, ms], index) => {
63+
await delay(ms);
64+
65+
if (typeof value === 'function') {
66+
value = await value();
67+
}
68+
69+
return {value, index};
70+
};
71+
6272
class ThrowingIterator {
6373
constructor(max, throwOnIndex) {
6474
this._max = max;
@@ -516,6 +526,21 @@ test('pMapIterable', async t => {
516526
t.deepEqual(await collectAsyncIterable(pMapIterable(sharedInput, mapper)), [10, 20, 30]);
517527
});
518528

529+
test('pMapIterable - index in mapper', async t => {
530+
t.deepEqual(await collectAsyncIterable(pMapIterable(sharedInput, mapperWithIndex)), [
531+
{value: 10, index: 0},
532+
{value: 20, index: 1},
533+
{value: 30, index: 2},
534+
]);
535+
t.deepEqual(await collectAsyncIterable(pMapIterable(longerSharedInput, mapperWithIndex)), [
536+
{value: 10, index: 0},
537+
{value: 20, index: 1},
538+
{value: 30, index: 2},
539+
{value: 40, index: 3},
540+
{value: 50, index: 4},
541+
]);
542+
});
543+
519544
test('pMapIterable - empty', async t => {
520545
t.deepEqual(await collectAsyncIterable(pMapIterable([], mapper)), []);
521546
});

0 commit comments

Comments
 (0)