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
分享
二维码
< <上一篇
下一篇>>