課程
/前端開發
/jQuery
/jQuery源碼解析(架構與依賴模塊)
目前但看代碼能看懂,但不明白具體有什么作用。加入之后立即調用之前的參數,什么場合有用?
2015-01-04
源自:jQuery源碼解析(架構與依賴模塊) 3-9
正在回答
首先,回調函數是從異步隊列分離出來的,那么就是無縫貼合Deferred的設計
可以查看下Deferred模塊會有這么一段代碼
var?tuples?=?[ //?action,?add?listener,?listener?list,?final?state ["resolve",?"done",?jQuery.Callbacks("once?memory"),?"resolved"], ["reject",?"fail",?jQuery.Callbacks("once?memory"),?"rejected"], ["notify",?"progress",?jQuery.Callbacks("memory")] ],
這里設計到規范的接口,done | fail | progress方法都是通過jQuery.Callbacks("once memory") 或jQuery.Callbacks("memory")生成的。
實際上在Callback源碼fire方法有一句 memory = options.memory && data;這樣就很巧妙的緩存當前參數的值,提供給下一個使用,這個就是then,pipe鏈式數據的一個基礎了,此刻的操作,我們把memory保存了這個數據的值
具體的請看Deferred這一章,因為jQuery很多東西都是設計給自己用的,但是這個思路與技巧是非常的nice!
貝爾_1987 提問者
舉報
由淺入深地剖析jQuery庫的設計與實現,揭開框架背后的秘密
1 回答memory的使用場景和意義?
6 回答請問這段代碼用途為何?
3 回答once memory 這種參數怎么看都由問題
5 回答為什么要用setTimeout
2 回答為什么一定要用call方法?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-01-05
首先,回調函數是從異步隊列分離出來的,那么就是無縫貼合Deferred的設計
可以查看下Deferred模塊會有這么一段代碼
這里設計到規范的接口,done | fail | progress方法都是通過jQuery.Callbacks("once memory") 或jQuery.Callbacks("memory")生成的。
實際上在Callback源碼fire方法有一句 memory = options.memory && data;這樣就很巧妙的緩存當前參數的值,提供給下一個使用,這個就是then,pipe鏈式數據的一個基礎了,此刻的操作,我們把memory保存了這個數據的值
具體的請看Deferred這一章,因為jQuery很多東西都是設計給自己用的,但是這個思路與技巧是非常的nice!