From 4a770ffb0c7583ff37b7a6320b5b7d97ff549499 Mon Sep 17 00:00:00 2001 From: Mireille Raad Date: Wed, 3 Mar 2021 11:03:43 -0700 Subject: [PATCH] DOC update docs/usage/webworker (#1298) Co-authored-by: Hood Chatham --- docs/usage/webworker.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/docs/usage/webworker.md b/docs/usage/webworker.md index 55ed075ea..346915ed9 100644 --- a/docs/usage/webworker.md +++ b/docs/usage/webworker.md @@ -18,7 +18,7 @@ Update the `webworker.js` sample so that it has as valid URL for `pyodide.js`, a `self.languagePluginUrl` to the location of the supporting files. In your application code create a web worker `new Worker(...)`, -and attach listeners to it using its `.onerror` and [`.onmessage`][onmessage] +and attach listeners to it using its `.onerror` and `.onmessage` methods (listeners). Communication from the worker to the main thread is done via the `Worker.postMessage()` @@ -31,22 +31,20 @@ method (and vice versa). In this example process we will have three parties involved: -* The **web worker** is responsible for running scripts in its own thread separate thread. +* The **web worker** is responsible for running scripts in its own separate thread. * The **worker API** exposes a consumer-to-provider communication interface. * The **consumer**s want to run some scripts outside the main thread so they don't block the main thread. ### Consumers -Our goal is to run some Javascript code in another thread, this other thread will +Our goal is to run some Python code in another thread, this other thread will not have access to the main thread objects. Therefore we will need an API that takes as input not only the Python `script` we wan to run, but also the `context` on which it relies (some Javascript variables that we would normally get access to if we were running the Python script in the main thread). Let's first describe what API we would like to have. -Here is an example of consumer that will exchange with the , via the worker -interface/API `py-worker.js` to run the following Python `script` using the provided `context` -using a function called `asyncRun()`. +Here is an example of consumer that will exchange with the web worker, via the worker interface/API `py-worker.js`. It runs the following Python `script` using the provided `context` and a function called `asyncRun()`. ```js import { asyncRun } from './py-worker'; @@ -79,11 +77,11 @@ main(); ``` Before writing the API, lets first have a look at how the worker operates. -How does our web worker will run the `script` using a given `context`. +How does our web worker run the `script` using a given `context`. ### Web worker -[A worker][worker API] is ... +Let's start with the definition. [A worker][worker API] is: > A worker is an object created using a constructor (e.g. [Worker()][Worker constructor]) that runs a named Javascript file — this file contains the code that will run in the worker thread; workers run in another global context that is different from the current window. This context is represented by either a DedicatedWorkerGlobalScope object (in the case of dedicated workers - workers that are utilized by a single script), or a SharedWorkerGlobalScope (in the case of shared workers - workers that are shared between multiple scripts).