Javascript 应用程序中的多线程错觉

Illusion of multithreading in Javascript application

我知道多线程在 javascript 中是不可能的,但我试图独立地给出不同功能的错觉 运行 例如。在我的代码中,我有 3 个简单的函数。

var input1 = [10,6,5,2,6,5];
var input2 = [3,4,8,7,1,9];
var x = 0;
var y = 0;
var sum = 0;


for(i = 0; i<6; i++){
  x = input1[i];
  y = input2[i];
  getInput(x,y);
}

function getInput(a,b){
  x = a;
  y = b;
  getSum(x,y);
}

function getSum(j,k){
  sum = j + k;
  printSum(sum);
}

function printSum(i){
  alert(i);
}

getInput函数的作用应该是获取x和y输入并将其传递给getSum函数。它不应该等待 getSum 和其他函数完成才能获得下一对输入。这适用于所有其他功能。它们都应该像时钟一样独立运行。现在我知道 js 是单线程的,但我想知道是否有可能设计一个循环来产生这种错觉。这是我目前的 FIDDLE。请指教

无需造假,使用WebWorkers即可获得真实的东西。

在您的主页上:

var myWorker = new Worker("worker.js");
myWorker.onmessage = function(e) {
  console.log('Message received from worker', e.data);
};
myWorker.postMessage('some variable')

...worker.js:

onmessage = function(e) {
  console.log('Message received from main script');
  var workerResult = 'Variable: ' + (e.data);
  console.log('Posting message back to main script');
  postMessage(workerResult);
}

示例来自:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

您可以在以下位置阅读更多信息:http://www.html5rocks.com/en/tutorials/workers/basics/

还有几个可用的库,其中之一是 multithread.js