Skip to content

Instantly share code, notes, and snippets.

@mariechatfield
Created February 13, 2018 01:04
Show Gist options
  • Save mariechatfield/6cbbe40b1599374e10bcba3b4118e1b1 to your computer and use it in GitHub Desktop.
Save mariechatfield/6cbbe40b1599374e10bcba3b4118e1b1 to your computer and use it in GitHub Desktop.
POC: Promise never resolves
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
logs: [],
returnsAPromise(shouldResolve) {
return new Ember.RSVP.Promise(resolve => {
const promise = shouldResolve ? Ember.RSVP.resolve('yay! 🎉') : Ember.RSVP.reject('boo 😬');
return promise
.then(value => {
this.log("Then from returned promise", value);
resolve(value);
})
.catch(err => {
// Because promise is never resolved OR rejected, it never resolves.
this.log("Catch from returned promise", err);
});
});
},
log(...lines) {
this.get('logs').pushObject(lines.join(', '));
},
actions: {
callPromise(shouldResolve) {
this.returnsAPromise(shouldResolve)
.then(value => this.log("Then from caller", value))
.catch(err => this.log("Catch from caller", err))
.finally(() => this.log("Finally from caller"));
}
}
});
<button onclick={{action (action "callPromise" true)}}>Resolve promise</button>
<button onclick={{action (action "callPromise" false)}}>Reject promise</button>
<ul style="font-family: monospace;">
{{#each logs as |logLine|}}
<li>{{logLine}}</li>
{{/each}}
</ul>
{
"version": "0.13.0",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.16.2",
"ember-template-compiler": "2.16.2",
"ember-testing": "2.16.2"
},
"addons": {
"ember-data": "2.16.3"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment