importScriptInWorkers()
importScriptInWorkers(
workerUrl:string):Promise<void[]>
Allows loading JavaScript code in the worker thread. Note that since this is using some very internal classes and flows it is considered experimental and can break at any point.
It can be useful for the following examples:
- Using
self.addProtocolin the worker thread - note that you might need to also register the protocol on the main thread. - Using
self.registerWorkerSource(workerSource: WorkerSource)to register a worker source, which should come withaddSourceTypeusually. - using
self.actor.registerMessageHandlerto override some internal worker operations
Parameters
| Parameter | Type | Description |
|---|---|---|
workerUrl
| string
| the worker url e.g. a URL of a JavaScript file to load in the worker |
Returns
Promise<void[]>
Example
// below is an example of sending a js file to the worker to load the method there
// Note that you'll need to call the global function `addProtocol` in the worker to register the protocol there.
// add-protocol-worker.js
async function loadFn(params, abortController) {
const t = await fetch(`https://${params.url.split("://")[1]}`);
if (t.status == 200) {
const buffer = await t.arrayBuffer();
return { data: buffer };
} else {
throw new Error(`Tile fetch error: ${t.statusText}`);
}
}
self.addProtocol("custom", loadFn);
// main.js
importScriptInWorkers("add-protocol-worker.js");