내가 (자바 스크립트의 모듈 패턴 다음) 모듈을 만들었습니다오류를 반환 한 요청을 수동으로 캐싱하지 않으려면 어떻게해야합니까? HTTP 요청, 캐시을하고 결과를 반환
var requestService = (function($) {
var cache = {};
var get = function(date) {
var params = date ? {'date': date} : {};
return $.getJSON('http://my/url', params, function(result){});
};
var fetchData = function(date) {
if (!cache[date]) {
cache[date] = get(date);
}
return cache[date].done(function(myData) {
return new Promise(function(resolve,reject) {
resolve(myData);
});
});
};
return {
fetchData: fetchData
};
})(jQuery);
내 문제는 오류 (예 :이 경우에도 결과가 캐시되는 경우 : 호스트에 일시적으로 도달 할 수 없음). 나는 그런 일이 일어나기를 원하지 않는다.
done() 함수는 요청이 성공한 경우에만 호출 될 것이라고 생각했지만 실제로는 그렇지 않습니다. 캐시 [날짜] .fail()을 추가해야하며 null로 설정되어 있습니까? 나는 무엇을 의미 :
return cache[date].done(function(myData) {
return new Promise(function(resolve,reject) {
resolve(myData);
});
}).fail(function(myData) {
cache[date] = null;
return new Promise(function(resolve,reject) {
reject(myData);
});
});
가 여기 내 requestService이 다른 모듈에서 호출되는 방법은 다음과 같습니다
requestService.fetchData(myDate).done(function(myData) {
// code when successful
}).fail(function(d, textStats, error) {
// error
});
감사를 사용
! 나는 약속 API에 참으로 새롭다,이 부호는 매우 더 청결하다. – Tarek