很多博客说单例模式每次实例化或者调用都是指向同一个内存地址(函数)
1.那单例模式 在项目中又有何作用呢?
1.缓存作用(单例又分 懒汉单例或者饿汉单例)
下面是我在项目的实际使用, 缓存token与自动续约token
var Singleton = function (token) {
this.token = token;
this.instance = null
this.timeTolen = null
};
Singleton.prototype.getToken = function () {
return this.token
}
// 添加一个实例话的方法
Singleton.initToken = function(is, token) {
if(is) {
this.instance = new Singleton(token)
}
return this.instance
}
// 自动续约token 每次请求前调用一次, 18分钟如果没有调用接口自动续约
Singleton.initTokenTime = function () {
clearTimeout(this.timeTolen)
this.timeTolen = setTimeout(() => {
Taro.login({
success: (login) => {
new HomeReqeust().tokenLogin(login.code).then(res => {
this.instance = new Singleton.initToken(true, res.data)
})
}
})
}, (1000 * 60) * 18)
}
export default Singleton
// 调用方式
// 参数1: 是否需要更新token
// 参数2:tokenId
// Singleton.initToken(false, null)