Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 原型中的setInterval,RangeError:超过最大调用堆栈大小_Node.js - Fatal编程技术网

Node.js 原型中的setInterval,RangeError:超过最大调用堆栈大小

Node.js 原型中的setInterval,RangeError:超过最大调用堆栈大小,node.js,Node.js,我的代码有问题。我正在尝试在new Tornament()的对象构造函数中启动间隔调用原型函数。但是node.js抛出错误:RangeError:超出了最大调用堆栈大小 当我不把计时器分配给比赛对象时,一切都很好。 var timer=setInterval();效果也不错 你能给我解释一下吗 var Tournament = function() { var tournament = this; console.log("Creating new instance.");

我的代码有问题。我正在尝试在new Tornament()的对象构造函数中启动间隔调用原型函数。但是node.js抛出错误:RangeError:超出了最大调用堆栈大小

当我不把计时器分配给比赛对象时,一切都很好。 var timer=setInterval();效果也不错

你能给我解释一下吗

var Tournament = function() {
    var tournament = this;
    console.log("Creating new instance.");
    this.users = [];
    this.state = 'waitingForPlayers';
    this._id = generateId();
    this.startTimer(6, tournament.startTournament);
};

Tournament.prototype.startTimer = function(time, timoutCallback) {
    var tournament = this;
    tournament.time = time; 
    tournament.timer = setInterval(function() {
        tournament.time--;
        console.log(Tournament.time);
        if(tournament.time <= 0) {
            clearInterval(tournament.timer);
            timoutCallback();
        };
    }, 1000);
};

Tournament.prototype.startTournament = function() {
    console.log("Tournament is starting.");
};


Edited:
I'm creating instance:

var tournament = new Tournament();
game.instances.push(tournament);
var=function(){
var=这个;
log(“创建新实例”);
this.users=[];
this.state='waitingForPlayers';
这个。_id=generateId();
此.startTimer(6,锦标赛.startTurnament);
};
Tournament.prototype.startTimer=函数(时间,timoutCallback){
var=这个;
时间=时间;
tournament.timer=setInterval(函数(){
比赛时间--;
console.log(锦标赛时间);

如果(Tornament.time您的
var tornament=this;
符号是怎么回事?充其量,您会混淆类和实例。无论如何,您所显示的任何内容实际上都不会执行任何操作。问题是从尝试实例化
tornament
开始的吗?什么是
tornament.startTournament
ld不是
this.startTurnament.bind(this)
?是的,当我尝试创建实例时,node.js抛出了一个错误。当我没有将setInterval引用分配给任何变量时,一切都正常工作。但是我需要分配停止此间隔的可能性。callbackTimeout也很好。您需要向我们显示
StartTurnament
。或者这是
的输入错误>startTimer
?锦标赛的原型,我已编辑此代码似乎没有问题(除了它应该是
console.log(锦标赛.time)
),在浏览器中工作正常。