我有两个嵌套的每个循环,如此。
$.each(a, function(index1, value1){
console.log(value1)
$.each(b, function(index2, value2){
console.log(value2);
}
}
我期待的输出是
a0
b0
b1
b2
a1
b0
b1
b2
etc
但我实际得到的是
a0
a1
a2
b0
b1
b2
etc
如何实现我想要的输出。我知道延迟对象现在已经实现了,我可以在我声明的函数上使用延迟对象定义函数和执行,但我不确定如何在现有函数上执行此操作。
编辑:我搞砸了,抽得太多了。getAByX(x, function () {
$.each(A, function (index, value) {
full_list += "string with info";
full_list += table_header;
getBByA(value, function () {
$.each(B, function (index2, value2) {
full_list += "string with info";
});
});
});
$(".table").append(full_list);
hideLoading();
});
这是修剪过的完整代码,它是乱码的函数调用,$ .each循环同步执行。
编辑2:修复了原始短代码中的错误。此外,由于第一段代码工作,这意味着$ .each循环同步执行,它是我异步执行的函数调用。这种实现使得初始问题无效,因为$ .each调用具有适当的行为。
答案 0 :(得分:2)
你的代码搞砸了。这是问题所在:
$.each(a, function(index, value) {
console.log(a)
请注意,您正在打印a
,而不是value
。您每次通过循环打印整个数组的值,而不是您正在迭代的项目。
这与延迟或异步无关。
答案 1 :(得分:1)
您应该打印value
而不是a
和b
。
var a = ['a0', 'a1', 'a2'];
var b = ['b0', 'b1', 'b2'];
$.each(a, function(index, value){
console.log(value) //console value instead of a
$.each(b, function(index, value){
console.log(value); //console value instead of b
});
});
也可以尝试使用map()
。
a.map(function(val, ond){
console.log(val);
b.map(function(v, k){
console.log(v);
});
});