zoukankan      html  css  js  c++  java
  • 码农干货系列【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! =  =!
  • 相关阅读:
    jQuery标签操作
    Bootstrap和Font Awesome
    jQuery拾遗
    Bootstrap笔记
    软件测试
    Day01 第一个Python程序
    cd指令
    ls命令
    type命令
    每天一个Linux指令
  • 原文地址:https://www.cnblogs.com/iamzhanglei/p/2924680.html
Copyright © 2011-2022 走看看