rikukissa
12/7/2013 - 2:30 PM

Wraps promise so that it's not called again until it's resolved

Wraps promise so that it's not called again until it's resolved

throttleWrapper = (promiseTarget, args...) ->
  isLoading = false
  promiseToServe = null

  return ->
    return promiseToServe if isLoading

    isLoading = true
    promiseToServe = promiseTarget.apply promiseTarget, args...
    promiseToServe.then (promiseResolved) ->
      isLoading = false
      promiseResolved