Javascript 静态.json文件在$http.get调用中被重复调用的性能问题
我想知道我在性能和最佳实践方面的决定,因为这看起来像是一种代码味道和性能冲击Javascript 静态.json文件在$http.get调用中被重复调用的性能问题,javascript,angularjs,json,Javascript,Angularjs,Json,我想知道我在性能和最佳实践方面的决定,因为这看起来像是一种代码味道和性能冲击 我有一个静态的.json文件“Airports.json” 上面的json是(~200行代码,仅包含航空公司、联盟和carriedid) 在ng repeat循环中调用angular filter,以便每几页调用服务几次 服务工厂执行此操作http。获取服务调用的每个筛选器 调用类似于返回$http.get(serviceBase+'Airlines.json')。然后 函数,然后返回findAirport(resul
http。获取服务调用的每个筛选器
{{ data.whatever | myfilter }}
过滤器
.filter .. calls service with the specific code e.g. "DL"
服务
var airportCodeService = function ($http, $q) {
var serviceBase = '../apps/temp/Api_Responses/',
factory = {};
factory.getAirlineFromCarrierId = function (code) {
return $http.get(serviceBase + 'Airlines.json').then(function (results) {
return findAirport(results.data, code);
});
}
function findAirport(airportList, code) {
var airLen = airportList.airlines.length;
var res = "";
for (var i = 0; i < airLen; i++) {
var item = airportList.airlines[i];
if (item.carrierId == code) {
res = item.airline;
break;
}
}
//console.log(res);
return res;
}
var airportCodeService=function($http,$q){
var serviceBase='../apps/temp/Api_Responses/',
工厂={};
factory.getAirlineFromCarrierId=函数(代码){
返回$http.get(serviceBase+'Airlines.json')。然后返回(函数(结果){
返回findAirport(results.data,code);
});
}
函数findAirport(机场列表,代码){
var airLen=airportList.airlines.length;
var res=“”;
对于(变量i=0;i
似乎我应该保留json数据,而不是$http.get调用每个筛选器请求等…?如果json是静态的,就没有理由重复请求它。你是对的,这将对性能造成严重影响 最简单的解决方法是在
airportCodeService
初始化时请求一次数据,并保存对该承诺的引用
var airportCodeService = function($http, $q) {
var serviceBase = '../apps/temp/Api_Responses/',
factory = {};
//Request the data once at service startup
var airlinePromise = $http.get(serviceBase + 'Airlines.json');
factory.getAirlineFromCarrierId = function(code) {
//Reuse the same promise - it won't make another request!
return airlinePromise.then(function(results) {
return findAirport(results.data, code);
});
}
}
如果json是静态的,就没有理由重复请求它。你是对的,这将对性能造成可怕的影响 最简单的解决方法是在
airportCodeService
初始化时请求一次数据,并保存对该承诺的引用
var airportCodeService = function($http, $q) {
var serviceBase = '../apps/temp/Api_Responses/',
factory = {};
//Request the data once at service startup
var airlinePromise = $http.get(serviceBase + 'Airlines.json');
factory.getAirlineFromCarrierId = function(code) {
//Reuse the same promise - it won't make another request!
return airlinePromise.then(function(results) {
return findAirport(results.data, code);
});
}
}
如果…它是静态的…你为什么要求它不止一次?…如果…它是静态的…你为什么要求它不止一次。。。