https://github.com/tktcorporation/type-async-decorator
https://github.com/tktcorporation/type-async-decorator
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/tktcorporation/type-async-decorator
- Owner: tktcorporation
- License: mit
- Created: 2020-07-21T22:16:30.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T20:30:26.000Z (almost 3 years ago)
- Last Synced: 2025-03-24T01:35:30.705Z (7 months ago)
- Language: TypeScript
- Size: 1.04 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# type-async-decorator
[](LICENSE)
[](https://travis-ci.org/tktcorporation/type-async-decorator)## Usage
For using async func by decorator.
```ts
function AsyncMethodDecorator(
beforeFunc?: (() => Promise) | (() => void) | undefined,
afterFunc?: (() => Promise) | (() => void) | undefined,
catchFunc?: ((error: any) => Promise) | (() => void) | undefined,
finalFunc?: (() => Promise) | (() => void) | undefined,
): MethodDecorator;
```## Samples
```ts
const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
const delayLog = async (str: string, ms: number) => {
await delay(ms);
console.log(str);
};
``````ts
@AsyncMethodDecorator(
async () => delayLog('before', 4000),
async () => delayLog('after', 2000),
async () => delayLog('failed', 1000),
async () => delayLog('fainaly', 1000),
)
async function hello() {
console.log('Hello.');
}await hello();
// before
// Hello.
// after
// fainaly
``````ts
@AsyncMethodDecorator(
async () => delayLog('before', 4000),
async () => delayLog('after', 2000),
async () => delayLog('failed', 1000),
async () => delayLog('fainaly', 1000),
)
async function fail() {
console.log('Hello.');
throw new Error()
}await fail();
// before
// Hello.
// failed
// fainaly
```