[請益] 如何監控javascript函式執行完成

看板Web_Design作者 (誠)時間11年前 (2013/01/05 12:38), 編輯推噓0(003)
留言3則, 3人參與, 最新討論串1/1
時常碰到一個動作需要呼叫三個函式:A(); B(); C(); 雖說執行的順序是A-B-C,因為B的處裡動作耗時較多,跑完結果的順序卻是A-C-B 大多時候C裡面是需要B跑完後的結果來做處裡,以至於發生錯誤 例如這個例子 http://jsfiddle.net/lukaschang/WSDXS/ 先對DIV寫入123再寫入456,需要的結果是最後顯示456 第一塊DIV有顯示出正常的結果 第二塊DIV,用setTimeout來模擬a1()需要長時間的處裡動作 該DIV就因為a1()還沒跑完就先跑完a2()的456,之後a1()跑完寫123覆蓋回去 這樣的結果就不符合期待,目前都用類似第三塊div加入callback的方式來解 但如處裡動作需要呼叫許多函式,寫起來就很不好看 抑或函式是前人所寫且壓縮過,一一改callback也是挺麻煩的 且就第三塊DIV來看,若callback放在setTimeout外面也是會跑出錯誤結果 所以想請問JS有聽取函式執行完的事件嗎? 或是有讓函式排程依序執行的容器嗎? 有純JS的解法嗎?各位先進碰到此問題都如何處理呢? 或是callback有更好的放法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.110.141

01/05 12:43, , 1F
jQuery.Deferred?
01/05 12:43, 1F

01/05 13:02, , 2F
感謝給關鍵字 來研究一下
01/05 13:02, 2F

01/05 21:10, , 3F
js就是一堆callback
01/05 21:10, 3F
文章代碼(AID): #1Gvwunkn (Web_Design)