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