2013-07-20 60 views
0

我有3個表(DB)的2000讀操作循環。每個人短短0.5秒完成(或更少) 我想顯示文本「Pass 1,Pass 2,Pass 3」 所以我試圖使用settimeout讓導航器刷新信息。Settimeout UI刷新和重循環策略

我:

main() 
{ load_data(); 
    analize_data(); 
} 

load_data() { 
settimeout(read1 , 300); 
settimeout(read2 , 300); 
settimeout(read3 , 300); 
} 

我的問題和無知(pesudocode): - 是每setttimeoput等到前面的代碼 「定時」 已經完成?我可以相信我會在settimeouts之間有一個開始的流程控制嗎? (或不?) - 我有沒有爲'analize_data'定義一個settimeout。如果沒有我輸入的功能,我有一個錯誤,因爲我沒有數據讀取...我有錯誤的未定義的數據。 - 我是否需要爲settimeout流定義全局策略? (也就是settimetouts對我的流程至關重要?)如果我有10個函數調用,我是否需要定義10個settimeouts?

我很樂意找到類似「do_pending_events」,「dojavascript_events」或「do_DOM_events」的東西。

我知道這是一個很知道的問題,但我一直沒有明確的和簡單的解決方案, 我的數據庫訪問模式爲本地(所以我並不需要AJAX沒有什麼相似)

任何幫助或鏈接將不勝感激。

+0

每setTimeout都不會等待其他人完成。 setTimeout表示「在xxx時間內執行給定的函數並繼續當前的工作流程」,所以setTimeouts中的所有函數將同時執行,如果它們全都具有相同的延遲並且在同一時間聲明爲 – dievardump

回答

0

你的超時時間將幾乎在同一時間 - 即。第二個不會等待第一個完成。 你用load_data()函數做了什麼,你設置了三個超時,所有三個計劃在300ms內,然後返回。 然後在大約300ms內,將調用read1,read2和read3 - 每個都有其自己的作用域。

您可以通過使用flow.js(https://github.com/willconant/flow-js

或自己做到這一點。

  • 呼叫READ1,設定範圍爲 「本」 load_data的()
  • 有READ1在其結束
  • 有load_data(發出 「DONE1」)聽 'DONE1' 和消防READ2當事件抓住。

您可以修改此邏輯以包含儘可能多的步驟。

+0

謝謝zla。如果你有時間,可以給我一些關於發射和聽音樂的想法嗎?再次感謝 。 – tonnot