deferred.promise()的作用是,在原来的deferred对象上返回另一个deferred对象,后者只开放与改变执行状态无关的方法(比如done()方法和fail()方法),屏蔽与改变执行状态有关的方法(比如resolve()方法和reject()方法),从而使得执行状态不能被改变。
意思是如果返回的是 return dtd,那么我想改变执行状态,可以这么做dtd.reject(),这样就改变了执行方法,但是如果 return dtd.promise(),由于dtd.promise()没有resolve,reject等方法,所以无法从外部改变执行状态。
意思是如果返回的是 return dtd,那么我想改变执行状态,可以这么做dtd.reject(),这样就改变了执行方法,但是如果 return dtd.promise(),由于dtd.promise()没有resolve,reject等方法,所以无法从外部改变执行状态。
2017-11-04
defer.promise(obj); 它的作用就是在wait对象上部署Deferred接口。正是因为有了这一行,后面才能直接在obj上面调用done()和fail()。
2017-11-04
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
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
2017-11-02
网易博客 http://bb1475451842.blog.163.com/blog/static/266680003201793091442720/?newFollowBlog 这块如果不懂,可以参考我写的博客,有异议可以提出。
2017-10-30
最新回答 / qq_Maserati总裁_0
浏览器安全机制,如果当前页面是https协议加载但页面上又引用http未经加密的资源,浏览器会默认阻止该资源的加载,慕课网的jquery等资源是http,所以没加载到,解决方法就是把当前页面协议改成http就好了。
2017-10-18
为什么这里要判断this对象是不是deferred?难道还能使用别的对象来调用resolve方法?? deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments)
//////////////////////////////////////////////
deferred对象里的this是可以被很多方法改掉的
//////////////////////////////////////////////
deferred对象里的this是可以被很多方法改掉的
2017-10-16