-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStoreOfClient.js
71 lines (66 loc) · 2.21 KB
/
StoreOfClient.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
* Store
* by kingpjchen 20160813
*/
define(function factory(require, exports, module) {
var StoreForGC = require('./StoreForGC')
var cache = require('util/cacheData')
var tools = require('./tools')
var StoreOfClient = StoreForGC.extend({
__config:{
params: {},
syncData: null
},
//提供给子类覆盖实现
fetchFromCache: function(){
var self = this, cacheData
return new Promise(function(resolve, reject){
if(cacheData = self.readSyncData()) {
resolve(cacheData)
}else if(cacheData = self.readLocalStorageData()){
resolve(cacheData)
}else {
reject(null)
}
})
},
readSyncData: function(){
if(this.__memoryData) return this.__memoryData
var syncDataCfg = this.get('syncData')
if(!syncDataCfg) return
return this.__memoryData = tools.namespace(window, 'syncData.DATA.'+syncDataCfg)
},
getCacheKey: function(){
var keys = [this.get('server'), this.get('module'), this.get('method')]
var params = this.get('params')
for(var i in params) {
if (params.hasOwnProperty(i)) {
keys.push(i+':'+params[i])
}
}
return keys.join('_')
},
readLocalStorageData: function(){
return cache.get(this.getCacheKey());
},
update: function(){
var self = this
self.fire('beforefetch')
return new Promise(function(resolve, reject){
self.proxy(this.get('params'), function(err, json){
if(err){
resolve(self.__memorydata = self.parse(json))
}else{
reject(json)
}
this.fire('afterfetch', json)
})
})
},
//定义销毁的方法,一些收尾工作都应该在这里
destroy:function(){
}
})
//StoreOfClient.fetch = function(){}
return StoreOfClient
})