javascript:工作同步
我正在使用HTML5WebWorker,我制作了一个函数,生成了几个worker并返回结果,但问题是它在worker更新结果之前返回值。所以我想延迟返回语句,直到收到所有结果javascript:工作同步,javascript,html,web-worker,Javascript,Html,Web Worker,我正在使用HTML5WebWorker,我制作了一个函数,生成了几个worker并返回结果,但问题是它在worker更新结果之前返回值。所以我想延迟返回语句,直到收到所有结果 for (i = 0; i < array1_rows; i++) { var worker = new Worker('json.js'); worker.postMessage(arr1[i]); worker.postMessage(arr2); worker.postMessa
for (i = 0; i < array1_rows; i++)
{
var worker = new Worker('json.js');
worker.postMessage(arr1[i]);
worker.postMessage(arr2);
worker.postMessage(i);
worker.onmessage = storeResult;
}
/////////////////////////////////
return result;
for(i=0;i
所以我只想延迟返回语句,直到收到结果。
请帮助我如何在java脚本中使用yield。就像评论中指出的那样-Web工作人员异步工作(想想AJAX是如何工作的) 只有当它们全部完成时,才能使用异步信号量来产生
function doSomething(callback){
var counter = array1_rows;
for (i = 0; i < array1_rows; i++)
{
var worker = new Worker('json.js');
worker.postMessage(arr1[i]);
worker.postMessage(arr2);
worker.postMessage(i);
worker.onmessage = function(){
storeResult.apply(arguments);//call it the same way it was called before.
counter--;
if(counter === 0){ // all workers returned
callback(result); //or whatever you're updating in storeResult
}
};
}
}
有关JS异步操作如何工作的更多信息,我建议您提供一个包含问题描述和解决方法的说明。如评论所述-Web工作人员异步工作(想想AJAX是如何工作的) 只有当它们全部完成时,才能使用异步信号量来产生
function doSomething(callback){
var counter = array1_rows;
for (i = 0; i < array1_rows; i++)
{
var worker = new Worker('json.js');
worker.postMessage(arr1[i]);
worker.postMessage(arr2);
worker.postMessage(i);
worker.onmessage = function(){
storeResult.apply(arguments);//call it the same way it was called before.
counter--;
if(counter === 0){ // all workers returned
callback(result); //or whatever you're updating in storeResult
}
};
}
}
有关JS异步操作如何工作的更多信息,我建议您提供一个包含问题描述和解决方法的说明。Web Workers是异步的,您不能同步它们。Web Workers是异步的,你不能同步它们。但我的问题仍然是我不想打印结果我想返回结果,所以我应该在哪里写返回语句以确保正确的结果你不能。worker是异步的,您接受回调,并在代码完成时执行回调。请阅读我链接到的AJAX问题,了解异步JavaScript是如何工作的。请注意,onmessage的属性/方法区分大小写。这意味着如果你写的是onMessage而不是onMessage,那么这个方法将不会被执行,所以要小心。但是我的问题仍然是一样的,我不想打印结果,我想返回结果,所以我应该在哪里写return语句来确保正确的结果你不能。worker是异步的,您接受回调,并在代码完成时执行回调。请阅读我链接到的AJAX问题,了解异步JavaScript是如何工作的。请注意,onmessage的属性/方法区分大小写。这意味着,如果您编写onMessage而不是onMessage,那么该方法将不会执行,因此请小心。