conch
micro library for async sequential batches (Node/Browser/Deno)
Install
Node
npm i @barelyreaper/conch
# or
yarn add @barelyreaper/conch
Deno
import {conch} from 'https://cdn.skypack.dev/@barelyreaper/conch';
// or
import {conch} from "https://www.unpkg.com/@barelyreaper/conch/dist/index.mjs
Usage
const { conch } = require('@barelyreaper/conch')
const data = [
{
item: 1,
},
{
item: 2,
},
{
item: 3,
},
]
function getData(item) {
return new Promise(resolve => {
setTimeout(() => {
resolve(item)
}, 2500)
})
}
// Will take 3 * 2500 , considering there's 3 items and only one can run at once (limit:1)
conch(data, getData, { limit: 1 }).then(data => {
console.log({ data })
})
Build
yarn # install devDeps
yarn test # check the if the limit is being taken in consideration
yarn build # build the package
Benchmark
conch has the lowest amount of allocation to usage ratio out of the 3
┌──────────┬────────────────────┬────────────────────┐
│ Name │ Used │ Allocated │
├──────────┼────────────────────┼────────────────────┤
│ conch │ 4.22 MB │ 6 MB │
├──────────┼────────────────────┼────────────────────┤
│ p-map │ 4.5 MB │ 6.01 MB │
├──────────┼────────────────────┼────────────────────┤
│ bluebird │ 5.99 MB │ 7.31 MB │
└──────────┴────────────────────┴────────────────────┘
Performance Benchmark
conch x 838,683 ops/sec ±2.79% (86 runs sampled)
pMap x 774,026 ops/sec ±7.36% (53 runs sampled)
bluebird x 3,510,299 ops/sec ±11.57% (56 runs sampled)
Fastest is bluebird,conch