2014-02-07 17 views
0

有時使代碼的工作,我們使用歸零 $超時:

$timeout(function() { 
    /* some stuff goes here */ 
    }, 0); 

我們的控制器,指令鏈路使用它....

我試圖瞭解上述行給我們,發現像互斥體那樣暫停消化週期直到所有模塊加載。

example(由@Maxim回答)演示這個問題

有人可以傳播光看這個問題?

謝謝,

回答

2

角的$timeout基本上結束了setTimeout一個漂亮的API。 JavaScript是一種異步,基於事件的語言,所以setTimeout不停止執行,它基本上只是告訴瀏覽器

「請運行這段代碼X秒後,但在此之前繼續執行任何代碼如下」

該聲明的最後一部分是一向尊重,即使超時爲0

那麼,什麼情況是,在你傳遞給$timeout功能的代碼執行調用下面每隔一段代碼到012執行。

+0

Royi Namir在其答案中描述了一個有用的理由。 –

+0

因此,超時我只是降低執行優先級,對吧? – snaggs

+0

有0超時,是的。 –

1

這與NG無關。

這與您希望瀏覽器在兩者之​​間做其他事情有關。

否則 - 瀏覽器可能卡住了。

這是一招,告訴瀏覽器:「我知道你很忙 - 因此 - 不要忘了我,並儘快做到這一點越好」

+0

即使超時0?謝謝。請參閱我發佈的鏈接。沒有超時,這個例子不起作用 – snaggs

+0

@fessy是的。 _您想要將長時間運行的循環或計算分解爲較小的組件,以便瀏覽器不會「凍結」或說「頁面上的腳本正忙」._ –