Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fruits = {}
- main = ->
- array = [
- {
- fruit: 'apple'
- param: 1
- }
- {
- fruit: 'banana'
- param: 2
- }
- {
- fruit: 'cherry'
- param: 3
- }
- ]
- array_r = array.reverse()
- callback_chain = null
- #把 array 的事件反過來讀取,以建立 callback chain
- #產生 callback function
- createFunction = (funcToInvoke, p, callback) ->
- ->
- funcToInvoke.call this, p, callback
- return
- #產生 callback chain
- callbackChainFactory = (fruit, param, callback) ->
- createFunction fruit, param, callback
- while array_r.length
- current_fruit = array_r.shift()
- fruit = current_fruit.fruit
- #fruit
- fruitFunction = fruits[fruit]
- #字串轉實際 function
- param = current_fruit.param
- #parameter
- callback_chain = callbackChainFactory(fruitFunction, param, callback_chain)
- #建立 callback function
- #執行 callback chain
- callback_chain()
- return
- fruits.apple = (p, callback) ->
- console.log 'apple, p = ' + p
- setTimeout (->
- if typeof callback == 'function'
- callback()
- return
- ), 1000
- return
- fruits.banana = (p, callback) ->
- console.log 'banana, p = ' + p
- setTimeout (->
- if typeof callback == 'function'
- callback()
- return
- ), 2000
- return
- fruits.cherry = (p, callback) ->
- console.log 'cherry, p = ' + p
- setTimeout (->
- if typeof callback == 'function'
- callback()
- return
- ), 3000
- return
- main()
- # ---
- # generated by js2coffee 2.2.0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement