js-设计模式之单例模式简单理解和实践

/**
 * 单例模式
 * 接口请求 若是没有登陆 先登陆
 * 
*/

var loginInstance = null;

// 这是封装的公共请求
function request() {
  return new Promise((resolve, reject) => {
    login().then(() => {
      resolve()
    })
  })
}


// 这是请求1
function rq1() {
  request().then(() => {
    console.log('请求1');
  })
}

// 这是请求2
function rq2() {
  request().then(() => {
    console.log('请求2');
  })
}

// 这是请求3
function rq3() {
  request().then(() => {
    console.log('请求3');
  })
}


// 这是登陆请求
function login() {
  // 全局只有一个登陆实例 未登陆就先登陆 登陆了就返回登陆实例
  if (loginInstance) {
    return loginInstance
  } else {
    loginInstance = new Promise((resolve, reject) => {
      console.log('登陆中...');
      setTimeout(() => {
        console.log('登陆成功');
        resolve()
      }, 1000);
    })
    return loginInstance
  }
}


// 假设一个页面onLoad中调用了请求1,2,3
rq1()
rq2()
rq3()

// 假设2秒后才登陆成功
setTimeout(() => {
  login()
}, 2000);

posted @   zoo-x  阅读(9)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示