Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法在jQuery AJAX调用中触发done函数?_Javascript_Jquery_Ajax_Local Storage - Fatal编程技术网

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

Javascript 有没有办法在jQuery AJAX调用中触发done函数?,javascript,jquery,ajax,local-storage,Javascript,Jquery,Ajax,Local Storage,我有一个函数,只有在AJAX调用完成后才能继续,但是如果我已经在localstorage中拥有上一个会话的数据,我希望能够跳过该AJAX调用 我当前的代码: $.when(getAddresses()).done(function (data) { addresses = data.data;; localStorage['addresses'] = JSON.stringify(addresses); {{Rest of the code t

我有一个函数,只有在AJAX调用完成后才能继续,但是如果我已经在localstorage中拥有上一个会话的数据,我希望能够跳过该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已经把它烤熟了。

反过来做

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

用承诺包装数据,这样无论从何处获取数据,它都将始终具有相同的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已将其嵌入。

将该逻辑抽象为一个单独的方法,您将在.done回调中调用该方法。不过,这仍将执行ajax调用,如果数据在本地存储中,我希望跳过整个调用。因此,我可以使用该localstorage数据,而不必使用ajax再次获取数据。将该逻辑抽象为一个单独的方法,您将在.done回调中调用该方法。尽管如此,这仍将执行ajax调用,但如果该数据在localstorage中,我希望跳过整个调用。因此,我可以使用本地存储数据,而不必使用ajax再次获取数据。