繁体   English   中英

JavaScript的setTimeout不起作用

[英]JavaScript's setTimeout doesn't work

我有一个模拟交通信号灯的简单JS对象:

function TrafficLight(redTime, yellowTime, greenTime) {
    var self = this;

    this.__timer = null;
    this.__state = null;
    this.__redTime = redTime;
    this.__yellowTime = yellowTime;
    this.__greenTime = greenTime;

    var setnewtimer = function (delay, func) {
        console.log('SET!');
        if (self.__timer) {
            clearTimeout(this.__timer);
        }
        self.__timer = setTimeout(delay, func);
    };

    TrafficLight.prototype.toRed = function () {
        this.__state = 'red';
        setnewtimer(this.__redTime, function () {
            console.log('RED!');
            self.toGreen();
        });
    };

    TrafficLight.prototype.toGreen = function () {
        this.__state = 'green';
        setnewtimer(this.__greenTime, function () {
            console.log('GREEN');
            self.toYellow();
        });
    };

    TrafficLight.prototype.toYellow = function () {
        this.__state = 'yellow';
        setnewtimer(this.__yellowTime, function () {
            console.log('YELLOW');
            self.toRed();
        });
    };

    TrafficLight.prototype.state = function () {
        return this.__state;
    };

    this.toGreen();
}

但是,当我创建一个TrafficLight对象(例如var a = new TrafficLight(1000, 1000, 1000); )时,每个a.state()调用都返回green (因此,交通灯不会通过计时器更改其状态。我怎么了?码?

您没有正确调用setTimeout

更改

setTimeout(delay, func);

setTimeout(func, delay);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM