Javascript setTimeout具有随机计时器延迟,按顺序显示数组项

时间:2018-12-31 14:24:28

标签: javascript settimeout

我编写了以下代码,使用随机计时器延迟显示数组的每个项目。

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的工作原理所致。

如何在保持输出顺序正常的同时使用随机计时器延迟。

1 个答案:

答案 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);
    })
}