我正在尝试缓存 JSON 响应,以防端点失败或花费太多时间来响应请求。
到目前为止,我从以前的 Stackoverflow 问题中获得了这个功能。问题是这个函数总是从实际请求中独立地返回前一个请求。由于这个函数被多个端点使用,我不仅需要返回通常的上一个请求,还需要返回我传递给函数的特定端点的上一个请求:
var prevReq = $.Deferred().resolve().promise();
function getData(endpoint) {
var newReq = $.ajax({
type: "GET",
url: endpoint,
timeout: 2000
}).then(function(data){
// successful, set previous request to this request
console.log(prevReq);
prevReq = newReq;
return data;
},function(){
// it failed, return the previous successful request
return prevReq;
});
return newReq;
}
如何将此功能编辑为上述内容?另一个问题是它应该只在第一次请求后超时,因为如果端点在第一次请求时没有正确响应,则对象将始终为空并且永远不会被数据填充。
感谢您的任何建议。