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
原文地址:https://www.cnblogs.com/Leo_wl/p/2932071.html