Connection
此类用于执行位于通过工作线程框架加载到单独线程的模块上的远程方法。
工作workers.open()方法加载脚本并返回主线程的Promise。解析后,您可以访问连接实例,该实例允许您通过invoke()或broadcast()方法调用模块的方法。
调用远程方法
若要将工作委派给工作人员,需要创建一个模块来公开函数或将由框架实例化的类。每个远程方法只能接受一个参数。参数值可以是结构化克隆算法处理的任何基元类型或 JavaScript对象,也可以是使用其中一个算法解析的JavaScriptd的Promise。
例如,让我们创建一个计算数字数组总和的简单工作程序。
export function getSum(numbers) {
var sum = 0;
for (var i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
return sum;
}
现在,我们将计算器模块加载到工作线程中并调用其函数。
export function getSumAsync(numbers) {
var connection = null;
return workers.open("./calculator.js")
.then(function(conn) {
// Keep the connection reference to later close it.
connection = conn;
return connection.invoke("getSum", numbers);
})
.then(function(result) {
// close the connection
connection.close();
connection = null;
return result;
});
}
// Invoke our method.
getSumAsync([0, 2, 4, 6, 8])
.then(function(result) {
console.log("Result:", result);
});
版权声明:
作者:Gomo
链接:https://www.develophm.com/index.php/connection/1208/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论