javascript 在执行异步操作时使用工作线程进行繁重计算的示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 在执行异步操作时使用工作线程进行繁重计算的示例相关的知识,希望对你有一定的参考价值。

const { Worker, isMainThread, parentPort, workerData } = require('worker_threads');
const request = require("request");


if(isMainThread) {
	console.log("This is the main thread")

	let w = new Worker(__filename, {workerData: null});
	w.on('message', (msg) => { //A message from the worker!
		console.log("First value is: ", msg.val);
		console.log("Took: ", (msg.timeDiff / 1000), " seconds");
	})
	w.on('error', console.error);
	w.on('exit', (code) => {
		if(code != 0)
	      	console.error(new Error(`Worker stopped with exit code ${code}`))
   });

	request.get('http://www.google.com', (err, resp) => {
		if(err) {
			return console.error(err);
		}
		console.log("Total bytes received: ", resp.body.length);
	})

} else { //the worker's code

	function random(min, max) {
		return Math.random() * (max - min) + min
	}

	const sorter = require("./test2-worker");

	const start = Date.now()
	let bigList = Array(1000000).fill().map( (_) => random(1,10000))

	sorter.sort(bigList);
	parentPort.postMessage({ val: sorter.firstValue, timeDiff: Date.now() - start});

}

以上是关于javascript 在执行异步操作时使用工作线程进行繁重计算的示例的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript——异步操作以及Promise 的使用

进阶学习5:JavaScript异步编程——同步模式异步模式调用栈工作线程消息队列事件循环回调函数

JavaScript中异步编程的工作模式 --- 同步模式/异步模式||异步的EventLoop消息队列

javascript:异步操作概述

异步操作

异步tcp通信——APM.Core 服务端概述