Javascript异步执行队列和setTimeout?

时间:2010-12-02 21:36:41

标签: javascript jquery settimeout execution

我有一个脚本需要突破javascript执行队列。我发现我可以用几种方法做到这一点。

alert();//of course we can't use this one.

setTimeout(function(){
    someScript();//works, but are there vulnerabilites?
}, 1);

还有哪些其他方法以及从javascript执行队列中删除的正确方法是什么?

如果setTimeout是最佳选择,使用setTimeout有哪些漏洞?是否存在未来的问题,超时中的代码无法调用,速度问题等等。

3 个答案:

答案 0 :(得分:3)

setTimeout是中断执行流程的典型方式。 alert()不是同一个东西,它是同步的 - 它将停止你的代码,直到按下OK,并从它停止的地方继续。当你使用setTimeout时,它会释放线程以执行另一段代码。

唯一的漏洞是不知道你在做什么。编码异步比编码同步有点棘手。你必须看你的背景,因为使用“this”是行不通的:

object = {
    firstMethod: function(){
        setTimeout(function(){
            this.secondMethod(); // won't work!
        }, 30);
    },
    secondMethod: function(){}
}

答案 1 :(得分:1)

基本上你在谈论执行当前堆栈,换句话说是异步执行。 setTimeout()是这种情况下的方法,setTimeout()之后的代码将在回调函数之前执行。

1ms中的{p> setTimeout()从不起作用,但实际上是1ms。根据我的经验,你通常可以获得的最快速度是10ms

答案 2 :(得分:1)

setTimeout是这样做的方法。请注意,第二个参数是毫秒而不是秒

的超时