码农干货系列【6】--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! =  =!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM