javascript上的时间和延迟

timing and delays on javascript

本文关键字:延迟 时间 javascript      更新时间:2023-09-26

我按照1和0的顺序将a的页面背景从白色更改为黑色。在我设法使其工作的那一刻,是具有相同延迟的黑白背景变化:

var syncinterval = setInterval(function(){
    bytes = "10101010101010101010101010101010101010101010101010101010101010101";
    bit = bytes[i];
    output_bit(bit);
    i += 1;
    if (i > bytes.length) {
        clearInterval(syncinterval);
        i = 0;
        for (i=0; i < input.length; i++) {
            tbits = input[i].charCodeAt(0).toString(2);
            while (tbits.length < 8) tbits = '0' + tbits;
            bytes += tbits;
        }
        console.log(bytes);
    }
}, sync_speed);

完整的工作演示:http://jsfiddle.net/kn48Z/

如何修改函数,使白色背景持续sync_speed秒,使黑色背景持续其他任何值?

如果我了解您要做什么,请尝试将代码放入一个单独的函数中并使用setTimeout。这会让你对自己想要完成的事情有更多的控制权。

我修改了你的代码。我检查比特是否为1(我假设它是白色的),如果是,它将在sync_speed秒内运行backgroundOrSomething。如果不是,它将运行后台或其他时间内的某些内容。我把otherTime设置为1秒,只是为了搞笑。

    function backgroundOrSomething (){
    bytes = "10101010101010101010101010101010101010101010101010101010101010101";
    bit = bytes[i];
    output_bit(bit);
    i += 1;
    if(i > bytes.length) {
        i = 0;
        for (i=0; i < input.length; i++) {
            tbits = input[i].charCodeAt(0).toString(2);
            while (tbits.length < 8) tbits = '0' + tbits;
            bytes += tbits;
        }
        console.log(bytes);
    }
    otherTime = 1000;
    if (bit == 1)
        setTimeout(backgroundOrSomething, sync_speed);
    else
        setTimeout(backgroundOrSomething, otherTime);
}
setTimeout(backgroundOrSomething, sync_speed);

代码底部的最后一个setTimeout将是第一个执行backgroundOrSomething的。

如上所述,您需要使用如下设置的间隔:

var bit = 0;
var syncInterval = setInterval(function() {
    document.body.style.backgroundColor = bit == 0 ? 'black' : 'white';
    bit = 1;
}, 3000);
var stopInterval = setTimeout(function() {
    clearInterval(syncInterval);
}, 50000);

Fiddle herehttp://jsfiddle.net/kn48Z/4/.请注意,背景开关变慢了,所以它应该适合。