Re: [問題] JQuery 等待事件完成
剛好趁這個範例練習一下 jQuery 提供的 Deferred object. :P
http://jsbin.com/usileh/3/edit#javascript,html,live
打開網頁最右邊有個 input,輸入 resolve 再按 enter 會把 legend 改成 resolved;
輸入 reject 再按 enter 會把 legend 改成 rejected。
deferred 可以想像成古墓派大門,附設一道斷龍石,斷龍石放下來就不能再打開了,
然後古墓裡有楊過、小龍女。斷龍石放下來只有兩種結果,一個是楊過、
小龍女成功從古墓中脫逃,或者逃脫失敗。成功脫逃會做哪些事情,逃脫失敗又怎麼做。
我們首先做了一個 deferred object,
接著讓 input 的 change handler 依據 value 改變 deferred 的狀態。
最後定義這個 deferred 成功會做哪些事情,失敗會做哪些事情。
心得:
我是覺得這樣程式碼比較好管理啦,以前如果有什麼東西依賴 XMLHttpRequest 的結果,
才能做某些事情,你就要用 ECMAScript5 裡面 Function.bind 的手法,
把自己包裝成一隻 subroutine 然後想辦法讓 xhr 的 success handler 執行,
固定幾隻可能還好,如果動態產生好幾支的話,會變不太好管理,程式碼寫的不是很漂亮,
也可能是我 javascript 太弱又沒什麼經驗才會寫得很醜啦。@@
現在只要每次送 xhr 出去之前產生一個 deferred,
然後有其他 object 或 function 要幹嘛幹嘛,只要把 deferred 拿來,
用 done / fail / then 之類的 method 登記一下就好了。解法似乎比較優雅一點?
--
Oni devas ami animalojn. Ili estas tiel bongustaj.
One should love animals. They are so tasty.
每個人都應該愛動物,他們是如此美味。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.180.52.124
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章