当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JavaScript ArcGIS workers.open用法及代码示例


基本信息

以下是所在类或对象的基本信息。

AMD: require(["esri/core/workers"], (workers) => { /* code goes here */ });

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

对象: esri/core/workers

自从:用于 JavaScript 4.2 的 ArcGIS API

用法说明

workers.open函数(或属性)的定义如下:

open (modulePath, options) {Promise<Connection>} static


打开与工作人员的连接并使用工作人员框架加载脚本。

参数:

规格:
类型说明
modulePath String

一个完全限定的 URL 到一个脚本来执行 worker 框架。

options Object
可选的

工人选项。有关对象规格,请参阅下面的属性。

规格:
client

Object

可选的

定义可从模块访问的 API 的对象。

strategy

String

可选的
默认值:分散式

指示如何加载模块。有关可能值的列表,请参见下表。

可能的值 说明
distributed 该模块被加载到每个可用的工作人员中。对Connection 的每次调用都将针对一个可用的工作人员。如果模块在调用之间不维护信息(无状态),请使用此策略。
dedicated 该模块被加载到一个工作人员中。对Connection 的每次调用都将针对同一个工作人员。如果模块维护来自先前调用的信息或主线程和工作线程之间的通信需要有状态,请使用此策略。
local 该模块被加载到主线程中。在使用工作人员框架 API 时使用此策略,同时禁用工作人员的使用。

可能的值"distributed"|"dedicated"|"local"

signal

AbortSignal

可选的

AbortSignal 允许可取消的异步作业。如果取消,promise 将被拒绝,并出现名为 AbortError 的错误。另见AbortController

返回:

类型 说明
Promise<Connection> 解析为 Connection 的实例。

例子:

// 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(this, "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("workerScripts/TimeOfTheDay", {
  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;
        });
    }
  };
});

相关用法


注:本文由纯净天空筛选整理自arcgis.com大神的英文原创作品 workers.open。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。