Skip to content

Instantly share code, notes, and snippets.

@dfreeman
Created June 19, 2018 16:40
Show Gist options
  • Save dfreeman/8ef784214d15322f43329bf2fdcebc7c to your computer and use it in GitHub Desktop.
Save dfreeman/8ef784214d15322f43329bf2fdcebc7c to your computer and use it in GitHub Desktop.
New Twiddle
import Ember from 'ember';
import PromiseMonitor from '../promise-monitor';
let promise = new Promise(resolve => setTimeout(() => resolve('Done'), 2500));
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
promise: new PromiseMonitor(promise)
});
import { set } from '@ember/object';
export default class PromiseMonitor {
constructor(promise) {
this.result = null;
this.isPending = true;
this.isFulfilled = false;
this.isRejected = false;
this._promise = promise;
promise.then(
result => this._didFulfill(result),
error => this._didReject(error)
);
}
_didFulfill(result) {
set(this, 'isPending', false);
set(this, 'isFulfilled', true);
set(this, 'result', result);
}
_didReject(error) {
set(this, 'isPending', false);
set(this, 'isRejected', true);
set(this, 'result', error);
}
}
{{#if promise.isPending}}
Waiting...
{{else}}
{{promise.result}}
{{/if}}
{
"version": "0.14.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "2.18.2",
"ember-template-compiler": "2.18.2",
"ember-testing": "2.18.2"
},
"addons": {
"ember-data": "2.18.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment