I have been trying to work on a code example to get my head around promises. But I can't seem to figure out how to deal with the callbacks and get the "thenable" value later.
Here are two relevant JSBin examples I am working on. Written in verbose style to emulate baking cookies.
Ember JS without async
http://jsbin.com/iSacev/1/edit
purely synchronous example to show the basic behavior (deliberately using basic object model)
Ember JS with async and promises
http://jsbin.com/udeXoSE/1/edit
Attempt to extend the first example and implement method where things are done with a delay and returns a fulfilled promise object later in time.
Concepts attempting to understand:
- How to properly handle promises and specifically Ember.RSVP.Promise and get an object later.
- How to use the Ember.run.later method instead of setTimeout
Seems like you are close to having this figured out, just had to make some minor changes to your jsbin to get things working:
First, instead of pushing the promise onto your array you should push the value that the promise passes to the
then
callback. Really in this case you don't need that promise object at all. So:Second change was to fix a bug in cookieSlowBake. In the original version the promise was being rejected because of a conditional test that would always evaluate to false since it was not in the Ember.run.later callback. The new version gets rid of the conditional and just resolves the promise when the callback is done.
See working jsbin here: http://jsbin.com/ebOBEk/1/edit
They are basically the same thing. You seem to be using it correctly.