Skip to content

Instantly share code, notes, and snippets.

@wryk
Created October 6, 2014 14:28
Show Gist options
  • Select an option

  • Save wryk/a63c5af3c8ca7542d545 to your computer and use it in GitHub Desktop.

Select an option

Save wryk/a63c5af3c8ca7542d545 to your computer and use it in GitHub Desktop.
export default lazy
import defer from 'defer'
/**
* @param {Function} fn
* @return {Function}
**/
function lazy (fn) {
return function () {
var context = this
var args = arguments
var real
var deferred = defer()
var proxy = deferred.promise
var resolve = deferred.resolve
var reject = deferred.reject
var then = proxy.then
proxy.then = function (onFulfilled, onRejected) {
if (!real) {
real = fn.apply(context, args)
real.then(resolve, reject)
}
return then(onFulfilled, onRejected)
}
return proxy
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment