当异步不再能满足需求:对浏览器中的多线程的介绍
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文转载自 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);
}
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。