簡単なチェーンが欲しかったから書いた
酷い期…じゃなくて非同期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()教えてくれたすがわらさん超サンキュー!