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