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