workers
此模块是实用框架,简化了 JavaScript ArcGIS API 中 Web 工作人员的使用。
工作线程框架利用多核 CPU 在后台线程中执行计算成本高昂的任务,而不会干扰用户界面。此框架加载脚本,并在主线程中使用连接类。然后,可以使用"连接"将作业异步地从主线程卸载到工作线程。工作框架在作业完成后返回Promise。
方法概述
- open():打开与工作人员的连接,并加载与工作负荷框架的脚本。
方法详情
- open(modulePath, options):打开与工作人员的连接,并加载与工作负荷框架的脚本。参数
- modulePath:一个完全限定的脚本 URL,用于使用工作程序框架执行
- options:辅助角色选项。有关对象规范,请参阅下面的属性
- client :定义可从模块访问的 API 的对象。
- strategy :默认值是distributed。指示如何加载模块。有关可能值的列表。"distributed"|"dedicated"|"local"
- signal :AbortSignal允许可取消的异步作业。如果取消,Promise将会被拒绝并且生成一个错误。
可选值 | 描述 |
---|---|
distributed | 模块加载到每个可用工作线程中。每次启动连接都将针对可用的工作人员。如果模块不在调用(无状态)之间维护信息,请使用此策略。 |
dedicated | 模块加载在一个工作程序中。每次启动连接都将针对同一个工作人员。如果模块维护来自以前调用的信息,或者主线程和工作线程之间的通信需要有状态,请使用此策略。 |
local | 模块加载到主线程中。如果在禁用辅助角色使用时使用辅助角色框架 API,请使用此策略。 |
// 设置工人的AMD装载机配置设置
到workersFolder文件夹的路径。
esriConfig.workers.loaderConfig = {
paths: {
myWorkers: window.location.href.replace(/\/[^/]+$/, "/workersFolder"),
dojo: "https://ajax.googleapis.com/ajax/libs/dojo/1.11.2/dojo/"
}
};
// 在workers框架中加载myWorkers/Calculator.js
并调用其“max”方法
workers.open("myWorkers/Calculator")
.then(function(connection) {
return connection.invoke("max", {
numbers: [0, 1, 2, 3, 4]
});
})
.then(function(result) {
console.log(result);
});
// 模块:workersFolder / Calculator.js
define(["esri/core/promiseUtils"], function(promiseUtils) {
// 当加载时,workers框架将创建新的“Calculator”
var Calculator = function Calculator() {};
// “Calculator”模块上的任何方法都可以被调用
从主线程
Calculator.prototype.max = function(data) {
return Math.max.apply(null, data.numbers)
}
return Calculator;
});
// 在workers框架中加载workerScripts/TimeOfTheDay.js
我们定义了一个可从模块访问的API
workers.open("workerScripts/TimeOfTheDay", {
client: {
getCurrentTime: function() {
return Date.now();
}
}
})
.then(function(connection) {
return connection.invoke("timeOfTheDay");
})
.then(function(result) {
console.log(result);
});
// 模块:workerScripts / TimeOfTheDay.js
define(["esri/core/promiseUtils"], function(promiseUtils) {
return {
timeOfTheDay: function(noArgs, remoteClient) {
// 回调主线程以获得那里的当前时间。
return remoteClient.invoke("getCurrentTime")
.then(function(time) {
return "The time is " + time;
});
}
};
});
版权声明:
作者:Gomo
链接:https://www.develophm.com/index.php/workers/1178/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论