看這種源碼并不是要求自己全部看懂它,而是讓自己能夠明白這種設(shè)計(jì)思想,學(xué)習(xí)一些高級(jí)寫法,在生產(chǎn)環(huán)境下代碼應(yīng)該怎么寫才規(guī)范
2017-11-29
deferred.promise()的作用是,在原來的deferred對象上返回另一個(gè)deferred對象,后者只開放與改變執(zhí)行狀態(tài)無關(guān)的方法(比如done()方法和fail()方法),屏蔽與改變執(zhí)行狀態(tài)有關(guān)的方法(比如resolve()方法和reject()方法),從而使得執(zhí)行狀態(tài)不能被改變。
意思是如果返回的是 return dtd,那么我想改變執(zhí)行狀態(tài),可以這么做dtd.reject(),這樣就改變了執(zhí)行方法,但是如果 return dtd.promise(),由于dtd.promise()沒有resolve,reject等方法,所以無法從外部改變執(zhí)行狀態(tài)。
意思是如果返回的是 return dtd,那么我想改變執(zhí)行狀態(tài),可以這么做dtd.reject(),這樣就改變了執(zhí)行方法,但是如果 return dtd.promise(),由于dtd.promise()沒有resolve,reject等方法,所以無法從外部改變執(zhí)行狀態(tài)。
2017-11-04
defer.promise(obj); 它的作用就是在wait對象上部署Deferred接口。正是因?yàn)橛辛诉@一行,后面才能直接在obj上面調(diào)用done()和fail()。
2017-11-04
function task(name) {
var dtd = $.Deferred();
setTimeout(function() {
dtd.resolve(name)
}, 1000)
return dtd;
}
$.when(task('任務(wù)一'), task('任務(wù)二')).done(function() {
alert('成功')
})
1,when()接受的參數(shù)必須是deferred對象,根據(jù)task1,task2返回的 狀態(tài):dtd.resolve(name)/dtd.reject(name),再來決定來執(zhí)行 done 還是 fail
var dtd = $.Deferred();
setTimeout(function() {
dtd.resolve(name)
}, 1000)
return dtd;
}
$.when(task('任務(wù)一'), task('任務(wù)二')).done(function() {
alert('成功')
})
1,when()接受的參數(shù)必須是deferred對象,根據(jù)task1,task2返回的 狀態(tài):dtd.resolve(name)/dtd.reject(name),再來決定來執(zhí)行 done 還是 fail
2017-11-02
網(wǎng)易博客 http://bb1475451842.blog.163.com/blog/static/266680003201793091442720/?newFollowBlog 這塊如果不懂,可以參考我寫的博客,有異議可以提出。
2017-10-30
最新回答 / qq_Maserati總裁_0
瀏覽器安全機(jī)制,如果當(dāng)前頁面是https協(xié)議加載但頁面上又引用http未經(jīng)加密的資源,瀏覽器會(huì)默認(rèn)阻止該資源的加載,慕課網(wǎng)的jquery等資源是http,所以沒加載到,解決方法就是把當(dāng)前頁面協(xié)議改成http就好了。
2017-10-18
為什么這里要判斷this對象是不是deferred?難道還能使用別的對象來調(diào)用resolve方法?? deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments)
//////////////////////////////////////////////
deferred對象里的this是可以被很多方法改掉的
//////////////////////////////////////////////
deferred對象里的this是可以被很多方法改掉的
2017-10-16