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