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

标签 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 .请指教。

最佳答案

无需制造假象,您可以使用 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

关于javascript - Javascript应用程序中的多线程错觉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096820/

相关文章:

javascript - 如何在不指定哪些属性但使用回调的情况下使用 backbone.js 进行保存

javascript - 视频内联 iOS 不工作

javascript - jQuery:检查所有 <DIV> 或 <Span> 是否包含特定文本

javascript - 在 jquery 中替换字符串中多次出现的多个子字符串

javascript - Flash 总是出现在谷歌浏览器的顶部

javascript - 为什么不能从句柄中拖动 jQuery UI 可排序元素?

php - 让 jquery 以 json 渲染的 html 格式工作的问题

javascript - 如何在 kineticjs 中创建撤消-重做?

javascript - 如何添加动态创建的文本框的所有值

javascript - 图像的 Ng-repeat,但第一张图像位于不同的 div 类中