作者B9 (叶酸酸)
看板Ajax
标题Re: [问题] JQuery 等待事件完成
时间Wed Sep 7 23:15:54 2011
刚好趁这个范例练习一下 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