API请求 接口/数据 缓存

缓存场景:接口请求时的并发缓存、接口请求后的结果缓存

// 场景一:并发时的接口缓存

let resultCatch = null;

export async function getResult(params) {

  let result = null;

  if (isNil( resultCatch )) {

     resultCatch = apiService.apiName(params);

     result = await  resultCatch ;

     resultCatch = null// 若请求结束,则清空缓存

  else {

     result = await  resultCatch ;

  }

  return  result ;

}

// 抽离缓存方法

let cache = null;

function cacheControl(handler) {

  let result = null;

  return async (...args) => {

    if (isNil(cache)) {

      cache = handler(...args);

      result = await cache;

      cache = null;

    else {

      result = await cache;

    }

    return result;

  };

}

//使用

async (params) => {

  const result = await cacheControl(fetchAllTagGroups)(params);

  return result;

};

// 场景二:接口请求后的结果缓存

let resultCatch = null;

export async function getResult(params) {

  let result = null;

  if (isNil( resultCatch )) {

     resultCatch = apiService.apiName(params);

     result = await  resultCatch ;

     resultCatch =  result; //将结果缓存

  else {

     result = await  resultCatch ;

  }

  return  result ;

}

你可能感兴趣的:(缓存,前端,javascript)