Order
一個用Key鍵建立可緩衝與快取的物件。
let order = Packhouse.createOrder({
max: 1000
})
Options
Max
- number
- default: 1000
- optional
cache的容載量,當超過容載量後會移除最舊的cache後再加入最新的,防止記憶體炸開。
Get or Create
獲得一個快取物件,如果沒有則建立。
let key = 'myFirstCache'
let cache = order.getOrCreate(key)
Clear and Remove
指定移除某個快取物件
order.remove('myFirstCache')
清空快取物件
order.clear()
Cache
order是一個快取物件的管理器,cache才是本體。
let cache = order.getOrCreate('newCache')
Onload
當該cache被賦予值後會呼叫onload,如果該chcae已經被賦值,那會直接呼叫callback。
cache.onload((cache) => {
cache.post()
})
Buffer
加入一則buffer等待cache被賦值。
let error = (m) => { console.error(m) }
let success = (m) => { console.log(m) }
cache.buffer(error, success)
Post
推播給所有的buffer結果。
cache.post()
Is Ready
可以用isReady得知是否有賦值的狀態。
cache.isReady() // true or false
On Ready
onReady是一個賦值的接口,當宣告error或success代表被賦值型態與結果。
cache.onReady((error, success) => {
success('success')
})
基本技巧
group.addTool({
name: 'getVector'
create: function() {
this.arc = PI = Math.PI / 180
this.order = Packhouse.createOrder()
},
action: function(angle, distance, system, error, success) {
let key = angle.toString() + distance
this.order
.getOrCreate(key)
.buffer(error, success)
.onload(cache => cache.post())
.onReady((error, success) => {
let v = angle * this.arc
success({
x : distance * Math.cos(v),
y : distance * Math.sin(v)
})
})
}
})