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

时间:2015-12-04 20:24:09

标签: javascript

我知道在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。请指教。

1 个答案:

答案 0 :(得分:2)

无需创造幻觉,您可以使用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