首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止被setTimeout延迟的Javascript setTimeout

停止被setTimeout延迟的Javascript setTimeout
EN

Stack Overflow用户
提问于 2013-11-20 13:16:39
回答 1查看 47关注 0票数 1

我对这段小提琴曲有异议:

http://jsfiddle.net/y45jN/7/

代码语言:javascript
复制
var mainFunction = function() {
    this.text;
    this.repeater;
}

var repeatEvery = function(func, interval) {

    var now = new Date();
    var delay = interval - now % interval;

    function start() {
        var intervalID = setInterval(func, interval);
        func(intervalID);
    }

    setTimeout(start, delay);

};

mainFunction.prototype.start = function(printText) {
    this.text = printText;
    var self = this;

    var func = function(intervalID) {
        if(intervalID){
            this.repeater = intervalID;
        }
        document.getElementById('test').innerHTML += this.text + '<br/>';
    };  

    repeatEvery(_.bind(func, this),1000);
}

mainFunction.prototype.stop = function() {
    clearInterval(this.repeater);
}

var test = new mainFunction();
test.start('hello');

setTimeout(test.stop,10000);

我的目标是调用停止函数并停止由开始函数设置的间隔。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-20 13:19:19

你需要做的

代码语言:javascript
复制
setTimeout(function(){ test.stop()}, 10000)

代码语言:javascript
复制
setTimeout(test.stop.bind(test), 10000); //Bind method is not available in IE8 though

而不是

代码语言:javascript
复制
 setTimeout(test.stop, 10000);

原因是Javascript在将回调传递给函数时丢失了" this“。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20097056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档