双for循环中的settimeout
settimeout inside of double for loops
我有一个简单的字符串数组示例:
let arr = ["hello", "hello world", "hi js", "javascript"]
我只想在说 2sec
之后在控制台上打印每个单词的每个字符
所以我尝试了这个
for(let i = 0; i < arr.length; i++) {
for(let j = 0; j < arr[i].length; j++){
setTimeout(() => {
let char = arr[i].charAt(j);
console.log(char);
}, 2000)
}
}
但不知何故这会在 2 秒后打印所有字符
我想打印一个字符等待 2 秒然后打印另一个等等...
虽然您可以将超时持续时间乘以字符所需的时间 加上 先前单词所需的时间 - 我认为它会更容易承诺并使用 await
:
let arr = ["hello", "hello world", "hi js", "javascript"]
const delay = () => new Promise(resolve => setTimeout(resolve, 500)); // replace with 2000
(async () => {
for (const string of arr) {
for (const letter of string) {
console.log(letter);
await delay();
}
}
})();
我有一个简单的字符串数组示例:
let arr = ["hello", "hello world", "hi js", "javascript"]
我只想在说 2sec
之后在控制台上打印每个单词的每个字符
所以我尝试了这个
for(let i = 0; i < arr.length; i++) {
for(let j = 0; j < arr[i].length; j++){
setTimeout(() => {
let char = arr[i].charAt(j);
console.log(char);
}, 2000)
}
}
但不知何故这会在 2 秒后打印所有字符
我想打印一个字符等待 2 秒然后打印另一个等等...
虽然您可以将超时持续时间乘以字符所需的时间 加上 先前单词所需的时间 - 我认为它会更容易承诺并使用 await
:
let arr = ["hello", "hello world", "hi js", "javascript"]
const delay = () => new Promise(resolve => setTimeout(resolve, 500)); // replace with 2000
(async () => {
for (const string of arr) {
for (const letter of string) {
console.log(letter);
await delay();
}
}
})();