javascript异步编程之:世界上最短的Promise库
javascript异步编程之:世界上最短的Promise库
类库源码
var Promise = function () {
this .thens = [];
};
Promise.prototype = {
resolve: function () {
var t = this .thens.shift(), n;
t && (n = t.apply( null , arguments), n instanceof Promise && (n.thens = this .thens));
},
then: function (n) {
return this .thens.push(n), this ;
}
}
使用方式
function f1() {
var promise = new Promise();
setTimeout( function () {
alert(1);
promise.resolve();
}, 1500)
return promise;
}
function f2() {
var promise = new Promise();
setTimeout( function () {
alert(2);
promise.resolve();
}, 1500)
return promise;
}
function f3() {
var promise = new Promise();
setTimeout( function () {
alert(3);
promise.resolve();
}, 1500)
return promise;
}
function f4() {
alert(4);
}
f1().then(f2).then(f3).then(f4)
类库思路
主要的思路就是将主Promise下的任务列表(thens)挂靠到子Promise下。当然该库可以封装至ajax、domready等耗时的场景当中,使其可以”thenable",如:
$$.ajax( "assets/xxx.php" , {
method: "GET" ,
data: "q=1&rand=" + Math.random()
}).then( function (msg) {
alert(msg.responseText)
});
have fun! = =!
作者: 张磊
出处: http://HdhCmsTestcnblogs测试数据/iamzhanglei
出处: IamZhangLei测试数据
本文版权归【当耐特砖家】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: Javascript
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于javascript异步编程之:世界上最短的Promise库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did46785