首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScriptset间隔崩溃资源管理器11选项卡

JavaScriptset间隔崩溃资源管理器11选项卡
EN

Stack Overflow用户
提问于 2018-06-29 13:30:19
回答 1查看 78关注 0票数 1

我正在作为javascript重新做我的一个旧的java小程序。我想显示一个简单的动画,每隔几秒钟改变一次。我有一个测试工作,但它崩溃了一段时间后,在互联网浏览器11。

我正在使用画布,并拥有以下html:

代码语言:javascript
运行
复制
<script src="jsfnn2.js"></script>
<body onload="init();">
<canvas id="tutorial" width="300" height="300"></canvas>

而javascript的(可能)相关部分是:

代码语言:javascript
运行
复制
function init() {
    window.requestAnimationFrame(draw);
}

...

function draw() {
    var canvas = document.getElementById('tutorial');

    ...

    if (canvas.getContext) {
        var ctx = canvas.getContext('2d');

    ...

    }
setInterval( draw, 2000);
}
init();

所以,我把setInterval放在绘图函数的末尾。那个地方对吗?从同一个函数中调用函数似乎是错误的。

很明显,我是从Mozilla.org上的画布教程中偷来的。我通常用R和python编写,我只是认为这是在javascript的wheelhouse中,所以我会尝试一下。我不打算在画布上做太多事情,只是想在资源管理器11 (我被迫在工作中使用--不要问:/)中礼貌地工作。够了解释我为什么是个懒惰的白痴。提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-29 13:33:22

你的直觉是正确的。在间隔回调中使用setInterval()意味着您要创建一个新的间隔定时器,每个刻度。经过几个周期之后,就会有成千上万的重复计时器,因为每一个冗余计时器都会出于同样的原因而产生更多的冗余计时器。

如果您将其更改为setTimeout(),它就会工作。setTimeout()机制只执行一个延迟周期,不重复。

另外,如果实际周期是2秒,那么通过requestAnimationFrame()启动这个过程没有多大意义,但不会有任何伤害。

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

https://stackoverflow.com/questions/51102940

复制
相关文章

相似问题

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