Simple, clean, Promise-based event synchronization Condition Variable library
npm install @debonet/es6conditionSimple, dependency-free Condition Variables for ES6 event synchronization.
```
npm install @debonet/es6condition
es6condition provides a Promises-based condition object for
synchronizing events by allowing an event to wait on a signal before proceeding
wait(), signal(), and broadcast() have the typical Condition Variable semanticsPromises
and can be used as or with async/await syntax, e.g.:
signal() releases the first event that is waiting on the Condition. Here's an example:
`javascript
const cond = new Condition();
setTimeout( () => {
console.log("Hello,");
cond.signal();
}, 100);
// wait until a signal is sent
await cond.wait();
console.log("World");
`
and generate an output:
> Hello,
> World
broadcast() releases the all events that are waiting on the Condition. Here's an example:
`javascript
const cond = new Condition();
setImmediate(async () => {
cond.wait().then(() => { console.log("Myself," )});
});
setImmediate(async () => {
await cond.wait();
console.log("and I");
});
setImmediate(async () => {
cond.broadcast();
console.log("Me,");
});
`
and generate an output:
> Me,
> Myself,
> and I
Waits until a signal has been received. Technically speaking it returns a promise that resolves when a signal() on the condition variable has been received
$3
$3
$3
$3
Sends a signal to the first event waiting on the condition variable. Technically speaking, it resolves the promise generated by the call to wait()
Sends a signal to every event waiting on the condition variable. Technically speaking, it resolves the promise generated by the call to wait()
definition of sleep() used in the example above
`javascript``
function sleep( dtm ){
return new Promise( fOk => setTimeout( fOk, dtm ));
}