[請益] 如何監控javascript函式執行完成
時常碰到一個動作需要呼叫三個函式: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
01/05 12:43, 1F
→
01/05 13:02, , 2F
01/05 13:02, 2F
→
01/05 21:10, , 3F
01/05 21:10, 3F