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! =  =!
  • 相关阅读:
    python执行命令行调试工具pdb
    py常用标准库
    Python的 垃圾回收机制
    私有化 : _x: 单前置下划线,私有化属性或方法;__xx:双前置下划线;__xx__:双前后下划线;属性property
    python 解析docx文档将文档名修改为docx里的合同编号
    LINUX7 HA(mysql)
    datax oracle到mysql数据抽取
    SQL优化案例(谓词越界)
    How to Find which Session is Holding a Particular Library Cache Lock (Doc ID 122793.1)
    窗口函数
  • 原文地址:https://www.cnblogs.com/iamzhanglei/p/2924680.html
Copyright © 2011-2022 走看看