关于js prototy方法重写的问题
最近在做微信开发,其中用到一个开发包weixin-service;
其中开发者指出,production环境下,不应该保存到内存中
WxService.prototype.saveToken = function(token, callback){
callback = is(callback, 'function') ? callback : function(){};
this.tokenStore = {
componentAccessToken: token.componentAccessToken,
expireTime: (new Date().getTime()) + (token.expireTime - 10) * 1000 // 过期时间,因网络延迟等,将实际过期时间提前10秒,以防止临界点
};
if (process.env.NODE_ENV === 'production') {
console.warn('Dont save accessToken in memory, when cluster or multi-computer!');
}
if(typeof callback === 'function') callback(null, this.tokenStore);
};
问题
1)我没有看到开发者提供回调方式来改变这种存储/获取的方式(是不是我没看到呢?)
2)如果真的没有话,我想通过覆盖的方式来改变, 这样
var WxService = require('weixin-service');
var config = require('../config');
var redisClient = redis.createClient({
host: config.redis.host,
port: config.redis.port
});
redisClient.select(2);
redisClient.on("error", function (err) {
console.log("Error " + err);
});
WxService.prototype.saveToken = function(token, callback){
console.log('进了自定义saveToken了');
callback = is(callback, 'function') ? callback : function(){};
this.tokenStore = {
componentAccessToken: token.componentAccessToken,
expireTime: (new Date().getTime()) + (token.expireTime - 10) * 1000 // 过期时间,因网络延迟等,将实际过期时间提前10秒,以防止临界点
};
if (process.env.NODE_ENV === 'production') {
console.warn('Dont save accessToken in memory, when cluster or multi-computer!');
//redisClient.hmset('tokenStore', token);
}
if(typeof callback === 'function') callback(null, token);
};
WxService.prototype.getToken = function(callback){
console.log('进了自定义getToken了');
callback = is(callback, 'function') ? callback : function(){};
redisClient.hgetall('tokenStore', function(err, token) {
if(token){
//todo
if((new Date().getTime()) < this.tokenStore.expireTime) {
callback(null, this.tokenStore);
}else {
return callback(null);
}
}else {
return callback(null);
}
});
};
module.exports = WxService;