使用 async.js 的嵌套循环
Nested loops using async.js
我想做一个非常简单的代码,其中我在 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
等等,但这并没有发生。我的代码中有明显的错误吗? async while 函数甚至可以嵌套吗?请帮忙! :(
到目前为止,这是我的代码:
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");
}
);
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 个都被同时调度到 运行。
我所做的更改是,现在在代码中,外循环迭代仅在内循环迭代完成时完成。
嵌套循环使用 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 / 2
我想做一个非常简单的代码,其中我在 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
等等,但这并没有发生。我的代码中有明显的错误吗? async while 函数甚至可以嵌套吗?请帮忙! :(
到目前为止,这是我的代码:
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");
}
);
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 个都被同时调度到 运行。
我所做的更改是,现在在代码中,外循环迭代仅在内循环迭代完成时完成。
嵌套循环使用 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 / 2