有没有办法在jQuery AJAX调用上触发done函数?



我有一个函数,该函数应该仅在 AJAX 调用完成后继续,但如果我已经在本地存储中拥有上次会话的数据,我希望能够跳过该 AJAX 调用。

我当前的代码:

$.when(getAddresses()).done(function (data) {
addresses = data.data;;
localStorage['addresses'] = JSON.stringify(addresses);
{{Rest of the code that should be executed after the AJAX call}}
}

提前感谢!

反之亦然。

在本地检查数据,如果您已经拥有请求,甚至不要发送请求。

将数据包装在一个承诺中,这样无论您从何处获取数据,它都将始终具有相同的 API。

async function get_data() {
let addresses = localStorage.getItem('addresses');
if (addresses) {
return JSON.parse(addresses);
}
let ajaxData = await getAddresses();
addresses = ajaxData.data;
localStorage.setItem('addresses', JSON.stringify(addresses));
return addresses;
}
get_data().then(data => {
// Rest of the code that should be executed after the AJAX call
});

另一种方法是忘记本地存储,只让 Web 服务设置合适的缓存标头。然后,您可以发出 HTTP 请求,但如果缓存信息显示浏览器缓存包含最新数据,则根本不会发出 HTTP 请求。

您无需重新发明数据的本地缓存。HTTP已经把它烤进去了。

最新更新