關於when.js的使用見屈屈的分享
http://www.imququ.com/post/promises-when-js.html
關於promise的實現見月影的分享
http://www.wumii.com/item/18c3poL1y
兩位都是360前端知名的大牛,他們的分享已經寫的非常深入了。我就不再重復一遍了。
但是聽完,總該留下點什么。
那么我關注兩個東西:
1.when.js的適用場景。
http://yiminghe.iteye.com/blog/1396751
我寫過一個小游戲,http://se.360.cn/weiboapp/crazy/game.html,如果在選擇錯誤的情況下就會閃爍三下。
那么這個過程是這樣的:1.禁用答題框的可刪功能 2.閃爍3次 3.打開答題框內容可刪功能
如果沒有用when.js我們的代碼大概是這樣:
disable();
for(var i=0;i<3;i++)
(function (){settimeout(function(){
xxx(i);
},1000);)}()
settimeout(function(){enable},3000);
如果我們使用了when.js之后:
代碼就變成了
defer.promise.then(disable()).then(blink()).then(enable);
還有一個關鍵的點:
如果在blink()失敗后,enable依然會執行。
2.promise的規范怎么用。
http://yiminghe.iteye.com/blog/1396751
這篇文章總結的不錯。
ajax 和 domready之后的事情我們通常都會把他們寫在一起,這樣用來按需加載他們。
但如果(function(){
a();
b();
c();
})顯然非常的不語義化。
他們到底是並行還是串行執行?
所以我們用promise規范來更好的實現這樣的需求。