2010-06-07 110 views
3

我的問題有點類似於this one.我們想知道是否有一種方法可以確定是否所有JavaScript都已完成(所以沒有javascript正在運行)。我們有很多東西在頁面的onload事件後超時運行,所以即使在頁面加載後,也可能會發生幾秒鐘的事情。出於一大堆理由,主要涉及管理的要求,我們需要知道所有這些腳本何時完成運行。有一個任意的數量,所以一個通用的解決方案會很棒。確定javascript是否已完成

回答

2

我能想到的最快和最容易的是創建一系列布爾值,告訴您哪些進程已完成。方法結束後,讓它將其中一個變量設置爲true。當他們都是真實的,你知道它已經完成加載。

+2

這就是我的想法。爲了實現這個目標,所有這些頁面上的所有功能都會變得煩人,但是噢。 C'Est la vie d'un programmeur! – Anthony 2010-06-07 00:20:00

+0

@塞爾吉奧的解決方案非常簡單,它可以讓您避免更改所有功能。基本上,任何時候你想要執行一個高優先級的函數,都可以通過一個特殊的包裝函數來運行它(他稱之爲executeWithNotify(),但你可以任意調用它,該函數將一個公共變量設置爲'isRunning = true',當它開始時爲'isRunning = false',所有你需要做的就是通過這個來運行你的高優先級腳本,並改變你的低優先級腳本來檢查'isRunning'。 – Andrew 2010-06-07 00:44:46

+1

Sergio函數的問題我喜歡它)是假定wrapper函數知道另一個進程何時結束,它假定進程在另一個方法返回時是同步的,如果你的包裝方法調用setTimeout等,並導致執行發生包裝函數將會返回錯誤結束的過程 – kemiller2002 2010-06-07 01:11:19

0

也許這些腳本在完成後會調用imDone()函數。

2

您可以創建一個excuteWithNotify(functionToEexcute)函數。它將接收函數作爲參數執行,執行它,然後它將適當地設置標誌。

+0

非常有趣的解決方案。並且很容易執行。 – Andrew 2010-06-07 00:37:43

1

我會把所有的JS文件放到一個文件中。然後在末尾使用布爾方法。

相關問題