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
本文版权归【当耐特砖家】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/iamzhanglei
出处:IamZhangLei.com
本文版权归【当耐特砖家】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: Javascript