cmp*_*ezg 0 javascript loops asynchronous 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
Run Code Online (Sandbox Code Playgroud)
等,但这不会发生.我的代码中有一些明显的错误吗?函数甚至可以嵌套,可以异步吗?请帮忙!:(
到目前为止这是我的代码:
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");
}
);
Run Code Online (Sandbox Code Playgroud)
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");
}
);
Run Code Online (Sandbox Code Playgroud)
async.whilst 没有阻塞,这意味着它们中的所有5个都被安排同时运行.
我所做的改变是,现在在代码中,外循环迭代仅在内循环迭代完成时完成.