虽然这不是一个漂亮的解决方案,但这应该对你有用。我添加了一些非常基本的缓存。我没有在angular中使用过jsonp,在$http配置中设置缓存似乎不起作用。这会是一个更好的选择。
app.factory('eventsFactory', [ '$http', '$q',
function( $http, $q ) {
var pub = {};
var jsonUrl = 'http://i.cdn.turner.com/nba/nba/.element/media/2.0/teamsites/warriors/json/json-as2015.js?callback=JSON_CALLBACK' + (new Date().getTime()),
cachedResponse;
pub.getEvent = function() {
var deferred = $q.defer();
if ( cachedResponse ) {
deferred.resolve( cachedResponse );
}
else {
$http.jsonp( jsonUrl );
window.jsonpCallbackAllStar2015 = function( data ) {
cachedResponse = data;
deferred.resolve( data );
}
}
return deferred.promise;
};
return pub;
}
]);
现在,在控制器内部,您可以执行以下操作:
app.controller('someController', [ 'eventsFactory',
function( eventsFactory) {
eventsFactory.getEvent().then(function( data ) {
console.log( data );
});
}
]);