关于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规范来更好的实现这样的需求。