@d3vtool/mutex
Version:
This library allows you to use concept of mutex for shared in-memory resource in asynchronous environment.
62 lines (42 loc) • 1.09 kB
Markdown
This library allows you to use concept of mutex for shared in-memory resource in asynchronous environment.
You can install the package using npm or yarn:
```bash
npm install @d3vtool/mutex
```
```bash
yarn add @d3vtool/mutex
```
```ts
import Mutex from '@d3vtool/mutex';
const mutex = new Mutex();
const resource: any[] = [];
await Promise.all([
(async () => {
const res = await fetch("some-api-endpoint/");
const data = await res.json();
const release = await mutex.acquire();
resource.push({ source: "fetch1", data });
release();
})(),
(async () => {
const res = await fetch("some-api-endpoint/");
const data = await res.json();
const release = await mutex.acquire();
resource.push({ source: "fetch2", data });
release();
})()
]);
console.log(resource);
/*
[
{ source: "fetch1", data },
{ source: "fetch2", data }
]
*/
```