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://www.cnblogs.com/iamzhanglei
出处: IamZhangLei.com
本文版权归【当耐特砖家】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: Javascript
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于javascript异步编程之:世界上最短的Promise库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did46785