async-decorators

async-await and 'promise methods' decorators

Usage no npm install needed!

<script type="module">
  import asyncDecorators from 'https://cdn.skypack.dev/async-decorators';
</script>

README

There are some helpfull decorators in this project for async class methods and functions.

Install

npm install --save async-decorators

Import

import {memoize, serialize, isSkipError} from 'async-decorators';

Memoize decorator

has parameters expireMs and cacheSize
usage:

class Action {
  @memoize({expireMs: K_EXPIRE_MS, cacheSize: 256})
  async query(p1, p2) {
    return await getDataAsync({p1, p2});
  }
}

or just

const asyncFn = memoize(async (x) => {
  return await ....
});

See example source

npm run example_memoize

and test source

npm run test_memoize

Serialize decorator

Serializes async method calls. (Make a new async call only if previous is completed) If there are more than one pending async calls, skip all but the last.

usage:

class Action {
  @serialize()
  async query(p1, p2) {
    return await getDataAsync({p1, p2});
  }
}

or just

const sfn = serialize(async (x) => {
  return await ....
})

See example source

npm run example_serialize

Both decorator usage

class Action {
  @serialize()
  @memoize({expireMs: K_EXPIRE_MS})
  async query(p1, p2) {
    return await getDataAsync({p1, p2});
  }
}

See example source

npm run example_ser_memoize