From be61a88f55fb992116d8ef2a105a3e4227be0bb9 Mon Sep 17 00:00:00 2001 From: DarkWiiPlayer Date: Tue, 19 Oct 2021 18:29:07 +0200 Subject: [PATCH] Add examples for Speaker --- speaker.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/speaker.md b/speaker.md index da57c4a..991a506 100644 --- a/speaker.md +++ b/speaker.md @@ -15,3 +15,49 @@ Speaker.speak(...args) Speaker.silence(callback) // Removes a given callback ``` + +## Example + +A simple example: + +```js +const speaker = new Speaker(true /* run callbacks immediately */) + +speaker.listen(value => console.log(value)) +speaker.listen(value => console.warn(value)) + +speaker.speak("This will be logged twice") + +console.log("This message will appear last") +``` + +A slightly more convoluted example: + +```js +import Speaker from '/speaker.js' + +// A new message that schedules messages as microtasks +const speaker = new Speaker() + +// A callback that calls messages as functions +speaker.listen(fn => fn()) + +// A shorthand wrapper around the speaker +const defer = fn => speaker.speak(fn) + +// Defer a function to be called in a microtask +defer(() => console.log("This message will appear second")) + +console.log("This message will appear first") + +// Defer another function to be called in a microtask +defer(() => console.log("This message will appear third")) +// Note: A single speaker will use a single microtask even +// for multiple messages. + +defer(() => { + // You can continue pushing messages inside the callback; + // they will be processed within the same microtask. + defer(() => console.log("This message will appear last")) +}) +```