- 另参阅:
方法列表
名称 | 返回值类型 | 描述 | 对象 | |
---|---|---|---|---|
Promise<Connection> | 更多信息 打开与 workers 的连接,并使用 workers 框架加载脚本。 | 更多信息 | workers |
方法详细说明
-
-
打开与 workers 的连接,并使用 workers 框架加载脚本。
参数:规范:modulePath String要使用 works 框架执行的脚本的完全限定 URL。
options ObjectoptionalWorker 选项。有关对象规范,请参阅下面的属性。
规范:client Object可选定义可从模块访问的 API 的对象。
strategy String可选默认值: distributed指示如何加载模块。有关可能值的列表,请参阅下表。
可能值 描述 distributed 该模块加载在每个可用的 worker 中。对 Connection 的每个调用都将针对一个可用的 worker。如果模块不维护调用之间的信息(无状态),请使用此策略。 dedicated 该模块加载在一个 worker 中。对 Connection 的每个调用都将针对同一 worker。如果模块维护来自先前调用的信息,或者主线程和 worker 线程之间的通信需要有状态,请使用此策略。 local 模块加载到主线程中。在禁用 workers 同时在使用 worker 框架 API 时使用此策略。 可选值:"distributed"|"dedicated"|"local"
signal AbortSignaloptionalAbortSignal 允许取消异步作业。 如果取消, promise 将被拒绝,并出现一个名为
AbortError
的错误。另参阅 AbortController。返回值:类型 描述 Promise<Connection> 解析为 Connection 的实例。 - 另参阅:
示例代码:// 将 worker 的 AMD 加载器配置的路径设置为名为 workersFolder 的文件夹。 geosceneConfig.workers.loaderConfig = { paths: { myWorkers: new URL("./workersFolder", document.baseURI).href } }; // 在 worker 框架中加载 myWorkers/Calculator.js 并调用它的 “getMaxNumber” 方法 workers.open(this, "myWorkers/Calculator") .then((connection) => { return connection.invoke("getMaxNumber", [0, 1, 2, 3, 4]); }) .then((result) => { console.log(result); }); //********************************************************* // 模块: workerFolder/Calculator.js //********************************************************* define([], () => { return { // 该函数可以从主线程调用 getMaxNumber: function (number) { return Math.max.apply(null, numbers); } }; });
// 在 workers 框架中加载 workerScripts/TimeOfTheDay.js 我们定义了一个可以从模块访问的 API workers.open("workerScripts/TimeOfTheDay", { client: { getCurrentTime: function() { return Date.now(); } } }) .then((connection) => { return connection.invoke("timeOfTheDay"); }) .then((result) => { console.log(result); }); //********************************************************* // 模块: workerScripts/TimeOfTheDay.js //********************************************************* define([], () => { return { timeOfTheDay: function(noArgs, remoteClient) { // 调回主线程获取那里的当前时间。
return remoteClient.invoke("getCurrentTime") .then((time) => { return "The time is " + time; }); } }; });