zoukankan      html  css  js  c++  java
  • Promise实现简易AMD加载器

    在最新的Chrome和FF中已经 实现了Promise。有了Promise我们用数行代码即可实现一个简易AMD模式的加载器

    var registry = {
        promises: { },
        resolves: { },
        getDependencyPromise: function(name) {
            if (!this.promises[name]) {
                var resolves = this.resolves;
                this.promises[name] = new Promise(function(resolve, reject) {
                    resolves[name] = resolve;
                });
            }
            return this.promises[name];
        },
        resolve: function(name, value) {
            this.getDependencyPromise(name); // creates promise if necessary
            this.resolves[name](value);
            delete this.resolves[name];
        }
    };
    
    function define(name, deps, definition) {
        require(deps, function() {
            registry.resolve(name, definition.apply(this, arguments));
        });
    }
    
    function require(deps, definition) {
        var promises = deps.map(registry.getDependencyPromise, registry);
        Promise.all(promises).then(function(result) {
            definition.apply(this, result);
        });
    }

    使用方式如下

    define('framework', ['component', 'library'], function(cmp, lib) {
        return { init: 'initialized:
    component: ' + cmp.description +
            '
    and library: ' + lib.version};
    });
    
    require(['framework'], function(framework) {
        alert(framework.init);
    });
    
    define('library', [], function() {
        return { version: '0.0.1' };
    });
    
    define('component', ['library'], function(lib) {
        return { description: 'uses library version: ' + lib.version };
    });

    原文地址    http://curiosity-driven.org/amd-loader-with-promises

  • 相关阅读:
    金融培训心得:银行客户经理10大不专业表现
    团队中的八类乞丐:你不改变,谁也救不了你!
    笔记本分类大全
    拆轮子 笔记
    spacemacs 自定义配置 笔记
    Fedora 25 安装搜狗输入法
    spark 配置使用
    Anaconda 仓库的镜像
    vscode vim配置
    使用Vim normal 命令 修改可视块区域
  • 原文地址:https://www.cnblogs.com/dubaokun/p/3530665.html
Copyright © 2011-2022 走看看