- 另请参阅
方法概述
名称 | 返回值类值 | 描述 | 对象 |
---|---|---|---|
Promise<Connection> | 打开与 workers 的连接,并使用 workers 框架加载脚本。 更多详情 | workers |
方法详细说明
-
-
打开与 workers 的连接,并使用 workers 框架加载脚本。
参数规范modulePath String要使用 workers 框架执行的脚本的全限定 URL。
options ObjectoptionalWorker 选项。有关对象规范,请参阅以下属性。
规范client Objectoptional定义可从模块访问的 API 的对象。
strategy Stringoptional默认值: distributed指示如何加载模块。有关可能值列表,请参见下表。
可能值 描述 distributed 模块在每个可用 worker 中进行加载。对 Connection 的每个调用都将针对一个可用的 worker。如果模块不维护调用之间的信息 (无状态),请使用此策略。 dedicated 模块在一个 worker 中进行加载。对 Connection 的每个调用都将针对同一个 worker。如果模块维护来自先前调用的信息,或者主线程和 worker 线程之间的通信需要有状态,请使用此策略。 local 模块在主线程中进行加载。当使用 worker 框架 API 而禁用 workers 时,请使用此策略。 可能值:"distributed"|"dedicated"|"local"
signal AbortSignaloptionalAbortSignal 允许取消异步作业。如果取消,则承诺将被拒绝,并返回一个名为
AbortError
的错误。另请参见 AbortController。返回类型 描述 Promise<Connection> 解析为 Connection 的实例。 - 另请参阅
示例// Set the path for the worker's AMD loader configuration // to a folder called workersFolder. geosceneConfig.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; }); } }; });