双异步循环,如何保证正确排序顺序的最终结果?(javascript)
Dual asynchronous loops, how to guarantee correct sorted order for end result? (javascript)
在我开始之前,请不要问为什么我想在javascript中这样做,只知道我需要,如果它让你感觉更好,我只是想。
那么,假设我有一个数组(这个数字是任意的,实际应用将在300或更多,然而,我选择它,因为它是一个奇数)在一个数组中有19个索引,例如,我想把这些索引以完全相同的顺序放入另一个数组中使用两个异步循环来完成它(我知道这可以简单地通过执行arrayOne = arrayTwo;
来完成,我只是在这个例子中使用数组)
我如何保证放入第二个数组的值的顺序是正确的?也就是说,这样做的逻辑或大意是什么?(也欢迎代码示例,如果需要,我也可以自由使用jquery。)
停止或停止等待一个循环完成当然是与使用异步循环相反的,因为它们会同时工作以更快地处理此任务。
这是一个JSfiddle,它在当前状态下不工作,但显示了我所说的基本概念(可能工作,如果你把它从JSfiddle中取出并把它放在一个真正的。js文件)我很确定这段代码显示了如何构建循环和检查,当两个循环完成时,但我不知道如何确保他们把变量放在正确的顺序。
我很可能没有很好地解释我自己,如果没有回应,我打算在几个小时内修改和编辑这个问题。如果你需要更多的细节,请在评论中问我,我会尽量详细说明我的意思。谢谢。
一个明显的解决方案是将原始数组中的项映射到存储原始索引的包装器中,然后,在所有操作完成后,根据存储的索引对结果数组进行排序,并展开数据。
arrayOne = ["#1", "#2", "#3", "#4", "#5", "#6", "#7", "#8", "#9", "#10", "#11", "#12", "#13", "#14", "#15", "#16", "#17", "#18", "#19"];
var wrapped = arrayOne.map( function(v, i){
return {
data: v,
index: i
}
});
...
if(loopOneDone && loopTwoDone){
//Unwrap
var unwrapped = arrayTwo.sort(function(a, b){
return a.index - b.index;
}).map( function(v) {
return v.data;
});
for (i=0;i<unwrapped.length;i++){
document.getElementById("p1").innerHTML= unwrapped[i] + "<br />" ;
}
console.log('All done!');
//Code ends here
}
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- 数组删除重复结果Javascript
- 比较数组中的连续元素不会返回任何结果(javascript)
- split(' ') 函数没有给出正确的结果 Javascript
- 如何产生结果Javascript嵌套缺陷
- I'm试图使用onclick函数显示函数的结果.(javascript)
- 计算结果Javascript中不同数字的数量
- 以 HTML 格式显示计算结果 (javascript)
- 没有得到预期的结果 - javascript
- 从函数返回结果 - JavaScript
- 在一行中返回来自三元的结果(JavaScript)
- 骰子效果-如何在最后显示假结果和真结果(JavaScript)
- WebGL纹理加载结果(Javascript)类型错误
- 限制搜索结果Javascript
- IF语句多个答案-相同的结果Javascript
- 双异步循环,如何保证正确排序顺序的最终结果?(javascript)
- 添加图像到测验结果javascript
- 奇怪的结果javascript比较
- 如何改变iFrame结果JavaScript警告框