mobile-safari javascript:多个setTimeouts或setIntervals

时间:2011-04-07 09:21:42

标签: javascript jquery ios mobile-safari

我正在使用setTimeout在iOs和mobile-safari上使用javascript做一些动画。

似乎当我同时定义了两个超时时,较短的超时不会被执行直到更长的时间。

setTimeout(a, 1000);
setTimeout(b, 300);

//it seems that both a and b will be called after 1000ms.

setInterval

似乎也是如此

是一个已知问题? 如果有,是否有解决方法?

谢谢!

1 个答案:

答案 0 :(得分:2)

这不是它应该发生的方式......我怀疑你可能在其他地方出现问题。

在不同的浏览器中尝试此测试:http://jsfiddle.net/V6Ktd/

HTML:

<a href="#" onclick="timetest()">Test</a>
<div>First fired at <span id="resultA"></span></div>
<div>First fired at <span id="resultB"></span></div>

JS:

function timetest() {
    setTimeout(function() {
        document.getElementById("resultA").innerText = "a:" + new Date().getTime();
     }, 1000);
     setTimeout(function() {
        document.getElementById("resultB").innerText = "b:" + new Date().getTime();
     }, 30);
}

点击测试后在Chrome中我看到:

First fired at a:1302168904051
First fired at b:1302168903081

我在Mobile Safari中看到了类似的结果。