为了账号安全,请及时绑定邮箱和手机立即绑定
占个坑。。
看这种源码并不是要求自己全部看懂它,而是让自己能够明白这种设计思想,学习一些高级写法,在生产环境下代码应该怎么写才规范
分析的太好了
绝对干货,一点也不邋遢,如同口嚼奶片,满嘴醇香
全程一脸懵逼
老师,你的普通话好感人啊!
如此牛B 一行代码 够研究半天的
deferred.promise()的作用是,在原来的deferred对象上返回另一个deferred对象,后者只开放与改变执行状态无关的方法(比如done()方法和fail()方法),屏蔽与改变执行状态有关的方法(比如resolve()方法和reject()方法),从而使得执行状态不能被改变。
意思是如果返回的是 return dtd,那么我想改变执行状态,可以这么做dtd.reject(),这样就改变了执行方法,但是如果 return dtd.promise(),由于dtd.promise()没有resolve,reject等方法,所以无法从外部改变执行状态。
defer.promise(obj); 它的作用就是在wait对象上部署Deferred接口。正是因为有了这一行,后面才能直接在obj上面调用done()和fail()。
function task(name) {
var dtd = $.Deferred();
setTimeout(function() {
dtd.resolve(name)
}, 1000)
return dtd;
}
$.when(task('任务一'), task('任务二')).done(function() {
alert('成功')
})
1,when()接受的参数必须是deferred对象,根据task1,task2返回的 状态:dtd.resolve(name)/dtd.reject(name),再来决定来执行 done 还是 fail
网易博客 http://bb1475451842.blog.163.com/blog/static/266680003201793091442720/?newFollowBlog 这块如果不懂,可以参考我写的博客,有异议可以提出。
add: function(fn) {
if(!list) return false;
list.push(fn)
}
jquery出到3.2.1了,是不是该更新一下源码解析课程了

最新回答 / qq_Maserati总裁_0
浏览器安全机制,如果当前页面是https协议加载但页面上又引用http未经加密的资源,浏览器会默认阻止该资源的加载,慕课网的jquery等资源是http,所以没加载到,解决方法就是把当前页面协议改成http就好了。
为什么这里要判断this对象是不是deferred?难道还能使用别的对象来调用resolve方法?? deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments)
//////////////////////////////////////////////
deferred对象里的this是可以被很多方法改掉的
请问代码只有jqury.data()让我怎么对比?
课程须知
源码的阅读不是一蹴而就的,需要大家有一定的功底,比如jQuery的基础运用以及API的熟悉度,除此之外要有牢固的javascript、DOM、CSS的基础功底,甚至还需要理解常见的设计模式、数据结构等等。当然大家也不要被这些给吓住了,理解,总是需要一种慢慢的学习过程。
老师告诉你能学到什么?
通过本课程的学习,您可以由浅入深地剖析jQuery库的设计与实现。 其中我们围绕的重心: 1、设计理念 2、结构组织 3、接口设计 4、模式运用 5、场景套用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消