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