首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >配置阶段后配置常量

配置阶段后配置常量
EN

Stack Overflow用户
提问于 2013-11-24 15:03:25
回答 1查看 170关注 0票数 2

我有一个角常数,我需要配置后的配置阶段的应用程序。

它基本上是一个端点的集合,其中一些是在应用程序进行了几次检查之后最后确定的。

我目前正在做的是将其中一些作为函数返回,在其中我可以传递更改的部分:(示例代码,而不是生产代码)。

代码语言:javascript
运行
复制
angular.module('...',[]).constant('URL',(function()
{
    var apiRoot='.../api/'
    return {
        books:apiRoot+'books',//No env needed here - Property (good)
        cars:function(env){//But needed here - Method (bad, inconsistent)
            return env+apiRoot+'/cars';
        }
    };
}()));

但这是相当低效的,因为我只需要编译一次URL,而不是每次需要它。

代码语言:javascript
运行
复制
URL.books
URL.cars('dev');

我正在考虑将它转换为一个角提供程序,并在实例化之前对其进行配置,但我不知道是否可以在配置块之外配置它,因为还没有env,所以太早了。

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-27 15:09:47

您可以对每个条目使用承诺 (书籍、汽车、.)。当你有汽车入口的所有信息(例如,env),你可以解决承诺。

代码语言:javascript
运行
复制
angular.module('...',[]).constant('URL',(function()
{
    var apiRoot='.../api/'

    var carsPromise = function() {
       var deferred = $q.defer();
       getEnv().then(function(env) { // getEnv also returns a promise
          deferred.resolve(env+apiRoot+'/cars');
       });
       return deferred.promise;   
    }

    return {
        books: instantlyResolvedPromise(apiRoot+'books'),
        cars: carsPromise();
    };
}()));

当然,这会增加一些复杂性,因为承诺会像疾病一样传播,但最终会得到一致的api。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20176044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档