[Js++开发历程] Jquery的$.ajax().done().fail()之不可能的事情
1.9 Jquery的$.ajax().done().fail()之不可能的事情
Jquery的开发人员的确让人折服,当我看到以上的代码时,感觉非常疑惑。 所有的ajax代码都在ajax函数中运行,为什么done和fail的中的函数能被回调呢?
很多人会认为Jquery的Deferred的效果,其实不然,因为ajax如果采用同步模式的,就会等待执行结果,根本等不了执行done函数注入。其实最为奥秘之处在于$.Callbacks的运行机制
$.Callbacks如果memory时,会记录上一次运行的结果。
* memory: will keep track of previous values and will call any callback added
* after the list has been fired right away with the latest "memorized"
* values (like a Deferred)
所以ajax的执行结果会存储在 memory中,当调用done()注册回调函数,会立即执行此回调函数,并传入memory存储的数据。
相关推荐
TONIYH 2020-07-22
83510998 2020-07-18
wcqwcq 2020-06-26
delmarks 2020-06-14
ppsurcao 2020-06-14
tthappyer 2020-06-07
lyqdanang 2020-08-16
坚持着执着 2020-06-16
TONIYH 2020-06-05
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16