0.3.1 • Published 5 months ago

@async-util/common v0.3.1

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
5 months ago

common

common tools for async util

Install

npm i @async-util/common

Usage

Note: If you want to use this module in a nodejs app, you should import the lib in .mjs file.

sleep

import { sleep } from '@async-util/common';

async function blabla() {
  //...
  await sleep(1000); // Sleep for 1000ms(1 second)
  //...
} 

function helper

import { isAsync, isGenerator, isAsyncGenerator } from '@async-util/common';

async function foo() {}
function *gen() {}
async function *genAsync() {}

isAsync(foo); // true
isGenerator(gen); //true
isAsyncGenerator(genAsync); // true

group / groupAsync

for (const g of group([1,2,3,4,5], 3)) {
  console.log(g)
}

async function *genAsync() {
  for (const i of [1,2,3,4,5]) {
    yield i;
    await sleep(500);
  }
}

for await (const g of groupAsync(genAsync(), 3)) {
  console.log(g)
}

getDataFromEvent

import { getDataFromEvent } from '@async-util/common'
import { EventEmitter } from 'events'

async function main() {
  const emitter = new EventEmitter()
  const evid = setInterval(() => emitter.emit('data', Date.now()), 500)
  setTimeout(() => {
    clearInterval(evid)
    emitter.emit('end')
  }, 5000)

  for await (const data of getDataFromEvent(emitter)) {
    console.log(data)
  }

  console.log('event1 done')

  const evid2 = setInterval(() => emitter.emit('data', Date.now()), 500)
  setTimeout(() => {
    clearInterval(evid2)
    emitter.emit('error', 'oops')
  }, 5000)

  for await (const data of getDataFromEvent(emitter)) {
    console.log(data)
  }

  console.log('event2 done, should not happend')
}

main().catch(console.error)
0.3.0

5 months ago

0.2.0

5 months ago

0.3.1

5 months ago

0.1.0

9 months ago