首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

[Js++开发过程] Jquery的$.ajax().done().fail()之不可能的事情

2014-01-21 
[Js++开发历程] Jquery的$.ajax().done().fail()之不可能的事情1.9 Jquery的$.ajax().done().fail()之不可

[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存储的数据。

?

热点排行