array-asyncify

Async array functions

Usage no npm install needed!

<script type="module">
  import arrayAsyncify from 'https://cdn.skypack.dev/array-asyncify';
</script>

README

Issue

We cannot use async function graceful in array methods such as filter,map,reduce and so on.

So the following code do not work

let a=[1,2,3]
a.map(async (e)=>{
  //some async operations
  //await ...
  return e+1
})
.filter(async (e)=>{
  //some async operations
  return e%2===0
})

Resolution

const { asyncify } = require("array-asyncify")
let delay = (t) => new Promise(res => setTimeout(res,t))
console.log("Example:");
(async () => {

  let a = asyncify([1, 2, 3])
  console.log("ret:")
  let ret = await a
    .map(async (e) => {
      await delay(100);
      return e + 1
    })
    .map(async (e) => {
      await delay(100)
      return e * 2
    })
  console.log(ret)

  try {
    let b = asyncify([1, Promise.resolve(2), 3])
    console.log("sum:", await b.reduce(async (p, n) => {
      console.log("p,n", p, n)
      return p + n
    }))
  } catch (e) {
    console.log(e)
  }


})()

TODO

asyncify other method.