我想做一个非常简单的代码,在javascript中有两个嵌套的循环,它们打印出它们当前正在使用的索引。(这是我想做的其他事情的基础)。内循环有一个计时器,所以它应该等待1秒才能打印每个数字。
我希望得到这样的结果:
outer count: 0
inner count: 0
inner count: 1
inner count: 2
inner count: 3
inner count: 4
in out
outer count: 1
inner count: 0
inner count: 1
inner count: 2
inner count: 3
inner count: 4
in out等等,但这不会发生的。我的代码有什么明显的错误吗?即使函数是嵌套的,异步也可以吗?请帮帮忙!
到目前为止,这是我的代码:
var count = 1;
async.whilst(
function() {return count < 5},
function(callback){
var icount = 0;
console.log("outer count:" + count);
async.whilst(
function () { return icount < 5; },
function (callback) {
console.log("inner count:" + icount);
icount++;
setTimeout(callback, 1000);
},
function (err) {
// 5 seconds have passed
console.log("in out");
}
);
count++;
callback();
},
function(err){
console.log("out out");
}
);发布于 2015-08-21 01:02:17
var count = 1;
async.whilst(
function() {return count < 5},
function(outer_callback){
var icount = 0;
console.log("outer count:" + count);
async.whilst(
function () { return icount < 5; },
function (callback) {
console.log("inner count:" + icount);
icount++;
setTimeout(callback, 1000);
},
function (err) {
// 5 seconds have passed
console.log("in out");
outer_callback(); // <--- here
}
);
count++;
},
function(err){
console.log("out out");
}
);async.whilst没有阻塞,这意味着所有的5个都计划同时运行。
我所做的更改是,现在在代码中,外部循环迭代只在内循环迭代完成时才完成。
发布于 2016-06-16 14:36:44
使用async.js嵌套循环:
var i = 0;
async.whilst
(
function() {return i < 3},
function(next_i)
{
var j = 0;
async.whilst
(
function () { return j < 3; },
function (callback)
{
console.log( i +' / '+ j);
j++;
setTimeout(callback,0);
},
function ()
{
i++;
next_i();
}
);
}
);console.log
0 / 0
0 / 1
0 / 2
1 / 0
1 / 1
1 / 2
2 / 0
2 / 1
2 / 2https://stackoverflow.com/questions/32130714
复制相似问题