57 lines
1.4 KiB
Markdown
57 lines
1.4 KiB
Markdown
|
# Utils
|
||
|
|
||
|
The utils only use standard JavaScript, so they can be used in Browser and NodeJS.
|
||
|
|
||
|
Also they are very small. Uncompressed and unminified only 3kb.
|
||
|
|
||
|
The utils have TypeScript definitions and are compatible with ES2015.
|
||
|
|
||
|
## Lock
|
||
|
|
||
|
Lock is a very simple promise based Locking mechanism for JavaScript.
|
||
|
|
||
|
Usage:
|
||
|
``` typescript
|
||
|
import { Lock } from "@hibas123/utils";
|
||
|
|
||
|
const lock = new Lock();
|
||
|
|
||
|
async doThingThatNeedsLocking() {
|
||
|
let release = await lock.getLock(); // This will wait till lock from others is released
|
||
|
|
||
|
// Do stuff that requires lock
|
||
|
|
||
|
release(); // Release lock
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Observable
|
||
|
|
||
|
Very simple and light weight Observable.
|
||
|
|
||
|
Usage:
|
||
|
``` typescript
|
||
|
import { Observable } from "@hibas123/util";
|
||
|
|
||
|
const server = new Observable(); // Get new Observable Server
|
||
|
|
||
|
// Server can only send, not subscribe to messages
|
||
|
// Receiving is only possible via the public API
|
||
|
const public = server.getPublicApi();
|
||
|
|
||
|
const func = (data)=>{
|
||
|
console.log(data);
|
||
|
}
|
||
|
|
||
|
// func will be callen when a message is available
|
||
|
public.subscribe(func);
|
||
|
|
||
|
server.send("Hello World");
|
||
|
|
||
|
// This will unsubscribe the function. Please note, that it can
|
||
|
// only unsubscribe the exact function, that is used in subscribe
|
||
|
public.unsubscribe(func);
|
||
|
|
||
|
// This now won't call func anymore
|
||
|
server.send("Hello World2");
|
||
|
```
|