refreshSiteinfo

refreshSiteinfo

コード

function refreshSiteinfo(opt) {
    var opt = opt || {}
    var cache = JSON.parse(localStorage['cacheInfo'] || '{}')
    SITEINFO_IMPORT_URLS.forEach(function(url) {
  • opt.force が定義されている
  • または cache[url] が定義されていない
  • または cache[url].expire が定義されていて、かつ new Date(cache[url].expire) < new Date() expire が今日より前である
  • のいずれかであれば実行
        if (opt.force || !cache[url] || (cache[url].expire && new Date(cache[url].expire) < new Date())) {

callback を定義

            var callback = function(res) {
  • http status code が200ではなければ抜ける
                if (res.status != 200) {
                    return
                }
  • XMLHttpRequest で返ってきた responseText を JSON.parse して reduceWedataJSON 関数に渡す
  • reduceWedataJSON 関数は JSON を reduce? して返す
  • 変数 info に JSON データを収納する
                var info = reduceWedataJSON(JSON.parse(res.responseText))
  • info が空だったら抜ける
                if (info.length == 0) {
                    return
                }
  • siteinfo オブジェクトに SITEINFO_IMPORT_URLS に定義されている url を key にしてデータを詰める
  • 詰めるデータは url, expire, info
                siteinfo[url] = {
                    url: url,
                    expire: new Date().getTime() + CACHE_EXPIRE,
                    info: info
                }
  • SITEINFO_IMPORT_URLS に定義されている url のうちの1つを key にして siteinfo オブジェクトを、cache オブジェクトに収納する
                cache[url] = siteinfo[url]
  • cache オブジェクトを JSON.stringify して、 localStorage['cacheInfo'] に収納する
                localStorage['cacheInfo'] = JSON.stringify(cache)
  • refreshSiteinfo の引数で渡される opt オブジェクトに callback が定義されていればこれを実行する
                if (opt.callback) {
                    opt.callback()
                }
            }

get()

            try {
                get(url, callback)
            }
            catch(e) {
            }
        }
    })
}