角度依赖注入性能

时间:2017-04-11 12:43:35

标签: javascript angularjs dependency-injection angular-services

您认为以下两种情况中的哪一种在性能方面更好 (有很多依赖注入服务)?

app.service('randomService', function(dependency1, dependency2, ...) {
    //code
});

app.service('randomService', function($injector) {
    var service;
    this.svFct = function (entityType, idList, entityList) {
            switch (entityType) {
                    case 'product':
                        service = $injector.get('dependency1');
                        service.get({}, onSuccess, onError);
                        break;
                    case 'order':
                        service = $injector.get('dependency2');
                        service.get({}, onSuccess, onError);
                        break;
                    case 'actor':
                        service = $injector.get('dependency3');
                        service.get({}, onSuccess, onError);
                        break;
                     ...
                    }
    };
});

1 个答案:

答案 0 :(得分:4)

角度注射器的性能影响可以忽略不计。服务是单体,它们在第一次注射时被实例化,并在随后的注射中从键/值存储中检索。

比较不正确,因为两个片段不包含相同的逻辑。 svFct方法可以多次调用,每次调用都会$injector.get(...)

在第一种情况下,有一个注射器调用。在第二种情况下,有多个注射器调用。