Skip to content

Instantly share code, notes, and snippets.

@eschwartz
Last active November 21, 2016 14:23
Show Gist options
  • Save eschwartz/955a3f8925e24270550cb635dd49c12b to your computer and use it in GitHub Desktop.
Save eschwartz/955a3f8925e24270550cb635dd49c12b to your computer and use it in GitHub Desktop.
Deferred
function Deferred() {
var deferred = {
resolve: null,
reject: null
};
deferred.promise = new Promise((resolve, reject) => {
// Save resolve/reject to deferred, for later usage.
deferred.resolve = resolve;
deferred.reject = reject;
});
return deferred;
}
@eschwartz
Copy link
Author

eg.

const d = Deferred();

d.promise.then(() => console.log('promise is resolved'));

d.resolve();
// 'promise is resolved'

@eschwartz
Copy link
Author

Here's another one:

function AsyncSpy() {
  const deferred = Deferred();
  return _.extend(sinon.spy(() => deferred.promise), deferred); 
}

const asyncSpy = AsyncSpy();
asyncSpy('foo')
  .then(() => console.log('spy resolved');

assert(asyncSpy.calledWith('foo'))

asyncSpy.resolve();
// 'spy resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment