promise自己理解的也不够深刻,具体知识点不在这里细说了

直接上个例子,清晰明了,自己去悟吧

<script type="text/javascript">
//模拟Promise,改善resolve原型方法
var Promise = function () {
this.thens = [];
};
Promise.prototype = {
constructor: Promise,
then: function(callback){
this.thens.push(callback);
return this;
},
resolve: function () {
var t,p;
t = this.thens.shift();
t && (p = t.apply(null, arguments));
while(t && !(p instanceof Promise)){
t = this.thens.shift();
t && (p = t.call(null, p));
}
if(this.thens.length){
p.thens = this.thens;
};
}
}
function f1() {
var promise = new Promise();
setTimeout(function () { console.log(1);
promise.resolve();
}, 5000) return promise;
} function f2() {
var promise = new Promise();
setTimeout(function () {
console.log(2);
promise.resolve();
}, 5000);
return promise;
} function f3() {
var promise = new Promise();
setTimeout(function () { console.log(3);
promise.resolve();
}, 5000) return promise;
} function f4() {
console.log(4);
return 11;
} function f5(x) {
console.log(x+1);
} function f6() {
var promise = new Promise();
setTimeout(function () { console.log(6);
promise.resolve();
}, 5000) return promise;
} function f7() {
console.log(7);
} var that = f1().then(f2).then(f3).then(f4).then(f5).then(f6).then(f7); </script>

最新文章

  1. Node.js学习——HTTP
  2. POJ 2186 Popular Cows(Targin缩点)
  3. Hibernate总结(三)
  4. 最新版ssh hibernate spring struts2环境搭建
  5. 关于checkbox全选与反选的问题
  6. mysql高可用架构
  7. 超级懒汉编写的基于.NET的微信SDK
  8. Duanxx的C++学习: 使用类没有被定义 原因及解决方法
  9. HDU3045 Picnic Cows (斜率DP优化)(数形结合)
  10. Factom(公证通)--基于区块链的存证系统
  11. ASCII代码
  12. html/css的学习之路(1)
  13. 继承RelativeLayout 自定义布局
  14. Linux记录-GC分析
  15. Flutter - BottomNavigationBar底部导航栏切换后,状态丢失。底部
  16. Android_如何将.9的图片转换成bitmap
  17. MTK 修改默认时区
  18. too many connections 解决方法
  19. C语言:指针的几种形式
  20. Angular路由与Nodejs路由的区别

热门文章

  1. Jquery二级简单折叠菜单
  2. JSP简介
  3. Char型和string型字符串比较整理
  4. mysql5 乱码问题解决方案
  5. React 同构
  6. Java_SSH项目主要步骤记录
  7. C语言入门(16)——C语言的数组
  8. 面向连接的socket数据处理过程以及非阻塞connect问题
  9. DTW-js版
  10. java.lang.OutOfMemoryError: PermGen space 解决方案