-
open
(modulePath, options)
{Promise<Connection>}
static
打開與工作人員的連接並使用工作人員框架加載腳本。
參數:
規格:類型 說明 modulePath String一個完全限定的 URL 到一個腳本來執行 worker 框架。
options Object可選的 工人選項。有關對象規格,請參閱下麵的屬性。
規格:client可選的 定義可從模塊訪問的 API 的對象。
strategy可選的 默認值:分散式指示如何加載模塊。有關可能值的列表,請參見下表。
可能的值 說明 distributed 該模塊被加載到每個可用的工作人員中。對Connection 的每次調用都將針對一個可用的工作人員。如果模塊在調用之間不維護信息(無狀態),請使用此策略。 dedicated 該模塊被加載到一個工作人員中。對Connection 的每次調用都將針對同一個工作人員。如果模塊維護來自先前調用的信息或主線程和工作線程之間的通信需要有狀態,請使用此策略。 local 該模塊被加載到主線程中。在使用工作人員框架 API 時使用此策略,同時禁用工作人員的使用。 可能的值:"distributed"|"dedicated"|"local"
signal可選的 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; }); } }; });
基本信息
以下是所在類或對象的基本信息。
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
函數(或屬性)的定義如下:
相關用法
- JavaScript ArcGIS wfsUtils.getCapabilities用法及代碼示例
- JavaScript window.open()用法及代碼示例
- JavaScript ArcGIS watchUtils.whenEqualOnce用法及代碼示例
- JavaScript ArcGIS wfsUtils.getWFSLayerInfo用法及代碼示例
- JavaScript ArcGIS watchUtils.PausableWatchHandle用法及代碼示例
- JavaScript window.close()用法及代碼示例
- JavaScript ArcGIS watchUtils.whenEqual用法及代碼示例
- JavaScript ArcGIS watchUtils.PromisedWatchHandle用法及代碼示例
- JavaScript ArcGIS SceneView double-click事件用法及代碼示例
- JavaScript ArcGIS geometryEngineAsync.overlaps用法及代碼示例
- JavaScript ArcGIS Expand.when用法及代碼示例
- JavaScript ArcGIS Sublayer.JoinTableDataSource用法及代碼示例
- JavaScript ArcGIS FillSymbol3DLayer.outline用法及代碼示例
- JavaScript ArcGIS Ground.loadAll用法及代碼示例
- JavaScript Object valueOf()用法及代碼示例
- JavaScript ArcGIS LabelClass.repeatLabelDistance用法及代碼示例
- JavaScript ArcGIS KMLLayerView.when用法及代碼示例
- JavaScript ArcGIS Daylight.visibleElements用法及代碼示例
- JavaScript Uint8Array.of()用法及代碼示例
- JavaScript ArcGIS CIMSymbol.CIMTextSymbol用法及代碼示例
- JavaScript new Legend用法及代碼示例
- JavaScript Slider.effectiveMin用法及代碼示例
- JavaScript Sketch.classes用法及代碼示例
- JavaScript Sketch.visible用法及代碼示例
- JavaScript ArcGIS AreaMeasurement3D.analysis用法及代碼示例
注:本文由純淨天空篩選整理自arcgis.com大神的英文原創作品 workers.open。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。