javascript 非同期Ajaxでjson読込!(新元号表示対応)

w2ui gridでのjson読込、書込のつづきぽい(´・ω・`)
javascripでjson読むのAjaxでgetしなきゃなのですが
今どきのAjaxは非同期推奨!!
jQueryのDeferred使って
json読み込んだら処理!を書いてみますた。
(便利!!)
 
拙いコードですがm(_ _)m

var garr;  //json読込用配列<グローバル変数
var deferred = new $.Deferred();  //Deferredオブジェクト作成<グローバル

$(function () {
  getJson();  //Ajax json読込
});

//Deferredオブジェクトに通知がきたら処理
deferred.done(function(){
  console.log(garr);  //読み込んだ配列
});

//Ajax json読込
function getJson(){
  $.ajax({
    type: "GET",
    url: "data/data.json",  //jsonファイル指定
    dataType : "json",
    scriptCharset: 'utf-8'
  }).done(function(data){
    garr = data;  //配列にjsonを入れる。
  }).fail(function(XMLHttpRequest, textStatus, errorThrown){
    alert(errorThrown);
  }).always(function(){
    deferred.resolve(); //ajax処理を終了したことをDeferredオブジェクトに通知
  });
    return deferred;
}

おまけの、和暦出力ファンクション
読み込むjson

{"total":5,"records":[{"recid":"1","gengou":"明治","sdate":"1868\/01\/25"},{"recid":"2","gengou":"大正","sdate":"1912\/07\/30"},{"recid":"3","gengou":"昭和","sdate":"1926\/12\/25"},{"recid":"4","gengou":"平成","sdate":"1989\/01\/08"},{"recid":"5","gengou":"新元号","sdate":"2019\/05\/01"}]}

和暦出力ファンクション

function getGengou() {
  var weeks = new Array('日', '月', '火', '水', '木', '金', '土');

  var now = new Date();  //今日
  var year = now.getFullYear();
  var mon = now.getMonth()+1; //month +1
  var day = now.getDate();
  var week   = weeks[ now.getDay() ];
  var hour = now.getHours();
  var min = now.getMinutes();
  var sec = now.getSeconds();
  if(mon < 10) mon = "0" + mon;
  if(day < 10) day = "0" + day;
  if(hour < 10) hour = "0" + hour;
  if(min < 10) min = "0" + min;
  if(sec < 10) sec = "0" + sec;

  var tmpDate;
  var gstr = '';
  var i = 0;
  var ysub = 0;
  var s = year + "年";
  while(i < garr.records.length){
    tmpDate = new Date(garr.records[i].sdate);  //元号開始日
    if(now.getTime() < tmpDate.getTime()){
      switch(i){
        case 0:
          gstr = garr.records[i].gengou + '以前'+ year + '年' + mon + "月" + day + "日";
          break;
        default:
          if(gstr === ''){
            ysub = year - (Number(garr.records[i-1].sdate.slice(0,4))-1);  //元号差分
            gstr = garr.records[i-1].gengou + ysub + '年' + mon + "月" + day + "日";
          }
          break;
      }
    }else{
      ysub = year - (Number(garr.records[i].sdate.slice(0,4))-1);  //元号差分
      if(now.getTime() >= tmpDate.getTime()) gstr = garr.records[i].gengou + ysub + '年' + mon + "月" + day + "日";
    }
    i=(i+1)|0;
  }
  return gstr;
}