funcable

A library provides async function invocation based on Web Messaging

Usage no npm install needed!

<script type="module">
  import funcable from 'https://cdn.skypack.dev/funcable';
</script>

README

Funcable

version-widget build-widget bundle-size-widget

A library provides async function invocation based on Web Messaging.

// main.js
const worker = new Worker("./worker.js");
const asyncFunctions = Funcable.wrap(worker);

asyncFunctions.add(1, 2).then(console.log); // → 3

// worker.js
const asyncFunctions = {
  async add(a + b) {
    const response = await fetch(`https://example.com/add?a=${a}&b=${b}`).json();
    return response.result;
  }
};
Funcable.expose(asyncFunctions);

API

Funcable.expose(value: T, endpoint: Endpoint = self)

  • @param value: value to expose via endpoint
  • @param endpoint: MessagePort-like object

Exposes value to be used by something beyond endpoint.

Funcable.wrap(endpoint: Endpoint): T

  • @param endpoint: MessagePort-like object
  • @return: proxy object that can be considered as exposed value.

Gets proxy object that can be considered as value exposed beyond endpoint.

Similar

  • Comlink - Comlink makes WebWorkers enjoyable