为什么我的代码在几个循环后就停止工作了



每当我运行代码时,它都会在几次迭代后停止工作。

function wait(delay) {
return new Promise((resolve) => {
setTimeout(() => {
resolve("");
}, delay);
});
}
let t = 0;
async function n() {
while (t < 10) {
let i = t + 3;
console.log("i < 5 ?",i,i<5)
while (i < 5) {
console.log("starting i...");
await wait(800);
console.log(i);
i++;
}
let u = t + 4;
console.log("u< 5 ?",u,u<5)
while (u < 5) {
console.log("starting u +...");
await wait(800);
console.log(u);
u++;
}
t++;
}
}
n();

输出:

starting i...
3
starting i...
4
starting i +...
4
starting i...

有人看到我的代码有错误吗?

您的第一个while循环不等待任何东西,将直接执行。

然后,你写了

let i = t + 3; // First iteration == 4, second == 5
console.log("i < 5 ?",i,i<5)
while (i < 5) {
// ...
}

但是在第二循环中,i将等于5->它不再运行,u也是如此。

所以它只会运行一个,就像说你的第一个while有点没用一样。

如果答案对你没有帮助,你可以提供更多信息,我会加强它

对以下评论的回应

我可以让我的第一个循环等待完成内部2 while循环吗

function wait(delay) {
return new Promise((resolve) => {
setTimeout(() => {
resolve('')
}, delay)
})
}
let t = 0
async function n() {
while (t < 10) {
let i = t + 3
console.log('i < 5 ?', i, i < 5)
;async () => {
while (i < 5) {
console.log('starting i...')
await wait(800)
console.log(i)
i++
}
}
let u = t + 4
console.log('u< 5 ?', u, u < 5)
;async () => {
while (u < 5) {
console.log('starting u +...')
await wait(800)
console.log(u)
u++
}
}
t++
}
}
n()

最新更新