mirror of https://github.com/pyodide/pyodide.git
DOC update docs/usage/webworker (#1298)
Co-authored-by: Hood Chatham <roberthoodchatham@gmail.com>
This commit is contained in:
parent
16c3514b7e
commit
4a770ffb0c
|
@ -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).
|
||||
|
||||
|
|
Loading…
Reference in New Issue