备忘录模式

本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-12-15

备忘录模式(Memento):在不破坏对象的封装性的前提下,在对象之外捕获并保存该对象内部的状态以便日后对象使用或者对象恢复到以前的某个状态。

可以通过备忘录模式缓存你请求过的数据,也就是说每次发送请求的时候对当前状态做一次记录,将你请求下的数据以及对应的页码缓存下来等,如果将来的某一刻想返回到某一浏览过的新闻页,直接在缓存中查询即可,直接恢复记录过的状态而不必触发新的请求行为,这是很高效的。

var Page = (function () {
  var cache = {};
  
  /**
   * page 页码
   * fn 成功回调函数
   * */
  return function (page, successFn, failFn) {
    if (cache[page]) {
      // 显示某页逻辑
      showPage(page, cache[page]);
      // 执行成功回调
      successFn && successFn();
    } else {
      // 若缓存Cache中无该页数据
      $.post('/api/data/getNewsData.php', {
        page: page,
      }, function (res) {
        if (res.errNo == 0) {
          showPage(page, res.data);
          cache[page] = res.data;
          successFn && successFn();
        } else {
          // 处理异常
          failFn && failFn();
        }
      })
    }
  }
})();

// 使用

var curPage = 1;

$('#next_page').click(function () {
  Page(++curPage, function() {
    console.log('成功翻页')
  })
})