Skip to content

Instantly share code, notes, and snippets.

Created January 26, 2014 02:11
Show Gist options
  • Save anonymous/8627124 to your computer and use it in GitHub Desktop.
Save anonymous/8627124 to your computer and use it in GitHub Desktop.
Thunk: a Bluebird Promise whose resolver is only started when its value is needed
class Thunk extends Promise
evaluated: false
constructor: (resolver) ->
deferred = Promise.defer()
@eval = ->
new Promise(resolver).then(
deferred.resolve
deferred.reject
)
super deferred.promise
_addCallbacks: ->
if not @evaluated
@evaluated = true
@eval()
super arguments...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment