Multithreaded web animations and task chaining. Cue JavaScript methods with greater performance and portability using Web Workers and JSON.
Find a file
2021-12-26 14:06:18 +01:00
monkey Add support for loop 2021-12-26 14:06:18 +01:00
.gitignore dev21w40a 2021-10-04 17:12:02 +02:00
LICENSE Initial commit 2021-10-04 13:26:38 +02:00
Monkeydo.mjs Implement requestAnimationFrame 2021-12-05 22:05:30 +01:00
README.md Update README.md 2021-11-10 12:52:43 +01:00

Threaded task chaining for JavaScript


Monkeydo uses the portable data format JSON to read tasks, making it easy to read by primates and machines alike.

{
  "tasks": [
    [0,"myJavaSriptMethod","someArgument","anotherArgument"]
  ]
}
Array key Description
0 Delay
Wait this many milliseconds before running this task
1 Method
Name of the JavaScript method to call
2+n Arguments
Some amount of arguments to pass to the method

Use Monkeydo

Monkeydo comes as an importable ECMAScript 6 module. In this guide we'll import this directly from a ./modules/ folder, but any web-accesible location will work.

  1. Import Monkeydo as an ES6 module
    import { default as Monkeydo } from "./modules/Monkeydo/Monkeydo.mjs";
    
  2. Define your JS methods in an object
    const methods = {
      myJavaScriptMethod: (foo,bar) => {
        console.log(foo,bar);
      }
    }
    
  3. Define your tasks in a JSON manifest (file or JSON-compatible JavaScript)
    {
      "tasks": [
        [0,"myJavaSriptMethod","Just like a","monkey"],
        [1200,"myJavaSriptMethod","I've been","dancing"],
        [160,"myJavaSriptMethod","my whole","life"]
      ]
    }
    
  4. Initialize and run Monkeydo with your methods and manifest
    const monkey = new Monkeydo(methods);
    monkey.play(manifest);
    

The example above would be the same as running:

console.log("Just like a","monkey"); // Right away
console.log("I've been","dancing"); // 1.2 seconds after the first
console.log("my whole","life"); // and then 160 milliseconds after the second