1

如何使脚本自我重复的速度比 setTimeout 允许的快,但仍不能尽可能快?

查看此演示以获取 2 个示例。(我也在下面发布了演示代码)

var x = 0;
var divEl = document.getElementById('counter');
var divEl2 = document.getElementById('counter2');

document.getElementById('gosettimeout').addEventListener('click', go, false);
document.getElementById('gotoofast').addEventListener('click', go2, false);

function go() {
    x++;
    divEl.innerHTML = x;
    if (x > 100) {
        return false;
    }
    setTimeout(function () {
        go();
    }, 0);
}

function go2() {
    x++;
    divEl2.innerHTML = x;
    if (x > 100) {
        return false;
    }
    go2();

}
4

2 回答 2

2
var x = 0;
var divEl = document.getElementById('counter');
var divEl2 = document.getElementById('counter2');

document.getElementById('gosettimeout').addEventListener('click', go, false);
document.getElementById('gotoofast').addEventListener('click', go2, false);

function go() {
    x++;
    divEl.innerHTML = x;
    if (x > 100) {
        return false;
    }
    if (x % 2 == 0) {
     setTimeout(function () {
         go();
     }, 0);
    } else {
     go();
    }
}

function go2() {
    x++;
    divEl2.innerHTML = x;
    if (x > 100) {
        return false;
    }
    go2();

}

快两倍,但不是尽可能快 =)

于 2013-07-29T13:32:47.230 回答
1
var x = 0;
var divEl = document.getElementById('counter');
var divEl2 = document.getElementById('counter2');

document.getElementById('gosettimeout').addEventListener('click', go, false);
document.getElementById('gotoofast').addEventListener('click', go2, false);

function go() {
    divEl.innerHTML = ++x;
    if (x > 100) {
        return false;
    }
    if (x % 5 == 0) {
     setTimeout(function () {
         go();
     }, 0);
    } else {
     go();
    }
}

function go2() {
    x++;
    divEl2.innerHTML = x;
    if (x > 100) {
        return false;
    }
    go2();

}
于 2013-07-29T13:38:11.917 回答