我有一个包含 5000 个元素的数组,我正在以下列方式执行它
var arr = [..] // 5000 elements array
split = 10;
arr.split(split);
function asyncForLoop(){
// It takes advantage of Web workers and execute for loop
}
var pending = new Array(split), data = [];
for(var i = 0, l = 4; i++){
(function(a){
data[i] = new asyncForLoop(a, function(){
});
})(arr[i]);
pending.shift();
}
这就是我执行 for 循环的方式。1. 我将一个数组分成 10 个切片 2. 创建 4 个异步进程来执行 for 循环的前四个切片。这是我的问题 3。我想实现一种机制,其中 4 个异步进程将在前四个数组切片上运行,谁在比赛中首先完成将选择第 5 项,接下来将选择第 6 项。这意味着选择仍待处理的项目。
在这里,我面临一个挑战,即如果两个进程同时完成,则两者都将执行相同的待处理项目,因为当时状态为待处理。
你能给我一个实施这个的想法吗?