0

こんにちは、キャッシュシステムを構築しようとしています

これが機能する方法は、ユーザーがタブをクリックすると、そのタブの json が読み込まれることです。ユーザーがタブを複数回クリックした場合を除いて、すべて正常に機能し、json を複数回フェッチします。理想的ではありません。

私の考えは、キャッシュを構築して、タブが初めてクリックされた後にjsonがキャッシュに追加され、次回そこから呼び出されるようにすることでした。

問題は、関数がキャッシュ配列に追加できるようにキャッシュ配列を初期化する場所です。

明らかに、私が今持っている場所は、getData関数を呼び出そうとしたときに未定義であることを意味します。誰でも助けることができますか?ここにコードがあります

$(function() {
    var cache = {}; 
    $(".nav-tabs li a").on("click", function(){
        var tabID = $(this).attr("href");
        getData(tabID, applicationID);
    });
});

function getData(tabID, applicationID){
    tab = tabID.replace('#', '');
    var promise = this.cache[tab];

    if (!promise) {
        promise = getJSON(tab, applicationID);
        this.cache[name] = promise;
    }

    $.when(promise).then(function(result) {
    //do something!
    });

function getJSON (name, applicationID) {


    var promise =   $.ajax({
            url: 'data/' + name + '.json',
            method: 'get',
            dataType: 'json', 
            data: {appID:applicationID}
    });

    return promise;
}
4

1 に答える 1