A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developers.arcgis.com/javascript/latest/api-reference/esri-core-workers.html below:

workers | API Reference | ArcGIS Maps SDK for JavaScript 4.33

ESM: import * as workers from "@arcgis/core/core/workers.js";

CDN: const workers = await $arcgis.import("@arcgis/core/core/workers.js");

Object: @arcgis/core/core/workers

Since: ArcGIS Maps SDK for JavaScript 4.2

This module is a utility framework that simplifies the use of Web Workers in the ArcGIS Maps SDK for JavaScript.

The workers framework takes advantage of multi-core CPUs to perform computationally expensive tasks in a background thread without interfering with the user interface. This framework loads a script and provides a calling function in the main thread using the Connection class. The Connection can then be used to offload jobs asynchronously from the main thread to workers. The workers framework returns a Promise once the job is completed.

Method Overview Name Return Type Summary Object open() Promise<Connection>

Opens a connection to workers and loads a script with the workers framework.

workers Method Details
open Method open(modulePath, options){Promise<Connection>}

Opens a connection to workers and loads a script with the workers framework.

Parameters

Specification

modulePath String

A fully qualified URL to a script to execute with the workers framework.

options Object optional

Worker options. See properties below for object specifications.

Specification

client Object optional

The objects defining the API accessible from the module.

strategy String optional

Default Value: distributed

Indicates how to load the module. See the table below for a list of possible values.

Possible Value Description distributed The module is loaded in each available worker. Each call to Connection.invoke will be targeting an available worker. Use this strategy if the module doesn't maintain information between invocations (stateless). dedicated The module is loaded in one worker. Each call to Connection.invoke will be targeting a same worker. Use this strategy if the module maintains information from previous invocations or communication between main and worker threads needs to be stateful. local The module is loaded in the main thread. Use this strategy when using the worker framework API while disabling the use of workers.

Possible Values:"distributed"|"dedicated"|"local"

signal AbortSignal|null|undefined optional

AbortSignal allows for cancelable asynchronous job. If canceled, the promise will be rejected with an error named AbortError. See also AbortController.

Returns

Examples

// Set the path for the worker's AMD loader configuration
// to a folder called workersFolder.
esriConfig.workers.loaderConfig = {
 paths: {
   myWorkers: new URL("./workersFolder", document.baseURI).href
 }
};

// load myWorkers/Calculator.js in the workers framework
// and invoke its "getMaxNumber" method
workers.open("myWorkers/Calculator")
  .then((connection) => {
    return connection.invoke("getMaxNumber", [0, 1, 2, 3, 4]);
  })
  .then((result) => {
    console.log(result);
  });

//*********************************************************
// module: workerFolder/Calculator.js
//*********************************************************
define([], () => {
  return {
    // this function can be invoked from the main thread
    getMaxNumber: function (number) {
      return Math.max.apply(null, numbers);
    }
  };
});
// Load workerScripts/TimeOfTheDay.js in the workers framework
// We define an API accessible from the module
workers.open(new URL("./workerScripts/TimeOfDay.js", document.baseURI).href, {
  client: {
    getCurrentTime: function() {
      return Date.now();
    }
  }
})
  .then((connection) => {
    return connection.invoke("timeOfTheDay");
  })
  .then((result) => {
    console.log(result);
  });

//*********************************************************
// module: workerScripts/TimeOfTheDay.js
//*********************************************************

define([], () => {

  return {
    timeOfTheDay: function(noArgs, remoteClient) {
      // call back the main thread to get the current time over there.
      return remoteClient.invoke("getCurrentTime")
        .then((time) => {
          return "The time is " + time;
        });
    }
  };
});

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4