私はajax呼び出しから返されたJSONをキャッシュし、キャッシュから結果を表示します。私の問題は、そのAjax呼び出しのキャッシュがすでに存在しない場合、結果はリフレッシュ時にのみ表示されることです。これは、ajaxが非同期であるという事実には似ていますが、どうすれば回避できますか? Ajax非同期:falseは推奨されなくなったため、これはオプションではありません。 $ .getJSON .done()機能が十分か、それとも良い方法がありますか?ここで
は、これまでの私のコードです:あなたのコードの
if ((online === true)) {
//get JSON
$.getJSON(baseurl + '/wp-json/app/v2/files?filter[category]' + cat + '&per_page=100', function(jd) {
//cache JSON
var cache = {
date: new Date(),
data: JSON.stringify(jd)
};
localStorage.setItem('cat-' + cat, JSON.stringify(cache));
});
//if not online and no cached file
} else if ((online === false) && (!cache['cat-' + cat])) {
alert('There are no cached files. You need to be online.');
}
//get cached JSON
cache['cat-' + cat] = JSON.parse(localStorage.getItem('cat-' + cat));
var objCache = cache['cat-' + cat].data;
objCache = JSON.parse(objCache); //Parse string to json
//display JSON results from cache
$.each(objCache, function(i, jd) {
var thumb = jd.file_thumbnail.sizes.medium;
//.....etc...
)
}}
'Ajaxは非同期ですが、どのように私はthat'回避ん - ありませんそれを取り入れ、使用する方法を学ぶ –
または、ページが最初に生成されたときに、サーバー側のコードを使用して初期データを提供します。 –