背景:我正在为(仅限 json 响应)jQuery ajax 调用创建缓存机制。成功调用 ajax 后,我将一些数据存储在 localstorage 中:key 是特定于请求的标识符(我将 和 连接起来method
)url
,value 是 JSON 响应,以及一些元数据,例如到期前多久。在使用相同方法对相同 url 进行第二次 ajax 调用时,我检查该项目是否存在于 localstorage 中。
问题:如果 localstorage 中有有效条目,我想停止对服务器的 ajax 请求,然后触发成功的 ajax 响应 - 并将我的 localstorage 数据注入为responseJSON
.
我看到 jquery 使用状态码来确定成功的 ajax 响应:
// Determine if successful
isSuccess = status >= 200 && status < 300 || status === 304;
然后稍后解决延迟:
// Success/Error
if ( isSuccess ) {
deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
} else {
deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
}
有没有一种方法可以访问从 $.ajaxPrefilter() 方法延迟的 jQuery(这是我用来执行逻辑的钩子)?如果我可以访问延迟对象,我想我可以自己解决它,然后取消 ajax 请求jqXHR.abort()
?