簡単なチェーンが欲しかったから書いた
酷い期…じゃなくて非同期web sql databaseとか使ってると、順番に実行するチェーン的な物が欲しくなります。
Differedってのが世の中にはあって、JSDefferedとか、jQueryにも今はDefferedってあるんだけど、まあちょっと大仰でかったるいし、ちょっと値を投げて渡すのが大仰になりそうなので、自分でちょっと書いた。
CoffeeScriptです。
class myChain
func_queue: []
index: -1
chain: (func) ->
@func_queue.push(func)
return @
chainExec: () ->
@index++
@func_queue[@index]?.apply(this, arguments);
#--- test
console.log "chain test"
c = new myChain
var0 = 'すがわらさんありがとう'
c.chain( (c,var0)->
console.log var0
console.log 1
setTimeout(
() ->
c.chainExec(c)
3000
)
).chain( (c)->
console.log 2
val1 = 'hello hello'
c.chainExec(c , val1)
).chain( (c, val1)->
console.log 3
console.log val1
c.chainExec(c) #あってもなくてもOK
).chainExec(c,var0).apply()教えてくれたすがわらさん超サンキュー!