当异步不再能满足需求:对浏览器中的多线程的介绍

前端开发 作者: 2024-08-22 01:55:01
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文转载自 https://neoteric.eu/blog/when-async-is-not-enoug
function factorial(n) {
  if(n === 1 || n === 0) {
    return 1;
  }
  return factorial(n - 1) * n;
}
console.log(factorial(3)); // 3! = 6
// 在主线程
var factorialWorker = new Worker('factorial.worker.js');
// 在主线程
var arr = [50,100,125,150];
for(var i = 0; i < arr.length; ++i) {
  factorialWorker.postMessage(arr[i]);
}
// 在主线程
factorialWorker.addEventListener('message',function(event) {
  console.log('!' + event.data.number + ' = ' + event.data.factorial);
});
// factorial.workder.js
function factorial(n) {
  if(n === 1 || n === 0) {
    return 1;
  }
  return factorial(n - 1) * n;
}

self.addEventListener('message',function(event) {
  self.postMessage({ number: event.data,factorial: factorial(event.data) });
});
npm install --save-dev worker-loader
module: {
  rules: [
    {
      test: /\.worker\.js$/,use: { loader: 'worker-loader' }
        
    },(...)
	]
}
import FactorialWorker from './factorial.worker.js';

const factorialWorker = new FactorialWorker();
factorialWorker.addEventListener('message',event => {
  console.log(`!${event.data.number} = ${event.data.factorial}`);
});

const arrayOfNumbers = [50,150];
for(let number of arrayOfNumbers) {
  factorialWorker.postMessage(number);
}
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_66411.html