gpt4 book ai didi

javascript - JS 中的老虎机 - 堆栈调用大小超出

转载 作者:行者123 更新时间:2023-11-28 02:43:53 25 4
gpt4 key购买 nike

我正在尝试制作一个基本(非动画)老虎机,但遇到堆栈大小错误。

我希望有人能解释一下原因是什么=/

我的错误:

Uncaught RangeError: Maximum call stack size exceeded

代码:

    window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( callback, element){
window.setTimeout(callback, 1000 / 60);
};
})();
var img_array = new Array('fire','life','lightning','rain','snow','sound','sun');


function roll(start_time){
var seconds_passed = new Date().getTime() / 1000 - start_time ;

if(seconds_passed < 3){
slot = 1;
while(slot < 4){
randno = Math.floor(Math.random()*img_array.length);
document.getElementById("slot"+slot).innerHTML = '<img src="'+img_array[randno]+'.png"/>';
slot++;
}
requestAnimFrame(roll(start_time));
} else {
document.getElementById("start").innerHTML = 'Roll The Slots Again?';
document.getElementById("start").onclick = function(){start(); };
}
return false;
}

function start(){
start_time = new Date().getTime() / 1000;
document.getElementById("start").innerHTML = 'Processing......';
roll(start_time);
}

window.onload = function(){
document.getElementById("start").innerHTML = 'Roll The Slots';
document.getElementById("start").onclick = function(){start(); };
}

我的错误在哪里?

最佳答案

这只是递归调用 roll 三秒,这将超过最大调用堆栈大小:

requestAnimFrame(roll(start_time));

您的意思可能是:

requestAnimFrame(function() {
roll(start_time);
});

关于javascript - JS 中的老虎机 - 堆栈调用大小超出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com