我编写了以下代码,使用随机计时器延迟显示数组的每个项目。
const letters = ['H', 'e', 'l', 'l','o'];
const typeLetters = _ => {
letters.forEach((letter) => {
let ranNum = Math.ceil(Math.random() * 1000);
setTimeout(function(ranNum) {
lettersCon.textContent += letter;
}, ranNum * 1);
})
}
我遇到的问题是数组项未按顺序显示,应显示Hello。我相信这是由于eventloop的工作原理所致。
如何在保持输出顺序正常的同时使用随机计时器延迟。
答案 0 :(得分:1)
这样的事情怎么办?
const letters = ['H', 'e', 'l', 'l','o'];
const typeLetters = _ => {
let total= 0;
letters.forEach((letter) => {
let ranNum = Math.ceil(Math.random() * 1000);
total+=ranNum;
setTimeout(function(ranNum) {
lettersCon.textContent += letter;
}, total);
})
}