我的代码是否分叉?

时间:2011-01-06 14:16:24

标签: javascript html5

 function loopthrough (i) {
            i++;
            if (i <= 20) {

                play_multi_sound("aud"+i);
                $("#debug").html(i);
                setTimeout("loopthrough("+i+");",242); }
            else {
                loops++;
                $("#debug").html("rest");
                $("#loops").html(loops);
                setTimeout("loopthrough("+0+");",1000);
            }
        }

我的代码看起来像是在分叉吗?因为经过大约3次循环后,浏览器才会崩溃。我使用过多的HTML5音频,因为我喜欢测试新功能,虽然我仍然是Javascript的新手我真的需要这个代码才能工作。 (我在画布上制作一个简单的节拍游戏,你使用乒乓球拍,每个你以不同的速度击球,它会播放声音,从而制作一个很酷的节拍)... Atm我只是测试很多音频的能力马上就完成了。

所以是的,我的基本问题是“我的代码是否有效,是否分叉,如果你知道更好的方法,那么无论如何都要大大改善这一点?”

谢谢, 汤姆C.

编辑:

刚删除我的循环++; (由于某种原因,它返回NaN,即使它被定义为全局)并且它实际上成功循环了20次而没有缺陷。

1 个答案:

答案 0 :(得分:3)

我刚做了一些测试,我坚持在这里,以便代码清晰。

function loopthrough (i) {
  i++;
  if (i <= 20) {
    console.log("bla");
    setTimeout(function(){ loopthrough(i); }, 242); }
  else {
    console.log("lala");
    setTimeout(function(){ loopthrough(0); }, 1000);
  }
}

loopthrough(0);

工作正常,从未崩溃过。而且它也没有分叉。

所以,它正在崩溃其他东西。

我会在另一个浏览器中尝试这个,看看它是否崩溃 - 可能只是FF beta 8崩溃。

尝试一次删除1位并查看它是否开始工作 - 这是缩小罪魁祸首的好方法。

我敢打赌它的声音正在崩溃......

*更新*

尝试加快超时延迟 - 可能是音频没有完成,然后又尝试再次播放,并以某种方式进行积压。