Skip to content

Instantly share code, notes, and snippets.

@lennyburdette
Created May 12, 2017 16:41
Show Gist options
  • Save lennyburdette/4bb612ad28ace85f9002cb21dd13842d to your computer and use it in GitHub Desktop.
Save lennyburdette/4bb612ad28ace85f9002cb21dd13842d to your computer and use it in GitHub Desktop.
promise timeout
import Ember from 'ember';
function timeoutAfter2s(promise) {
return new Ember.RSVP.Promise((resolve, reject) => {
promise.then(resolve, reject);
Ember.run.later(() => reject('timeout'), 2000);
});
}
export default Ember.Component.extend({
requestNonce() {
return new Ember.RSVP.Promise(resolve => {
Ember.run.later(() => resolve('nonce'), this.get('delay') * 1000);
});
},
actions: {
doIt() {
this.set('result', 'loading...');
timeoutAfter2s(this.requestNonce())
.then(result => this.set('result', `SUCCESS: ${result}`))
.catch(result => this.set('result', `REJECTED: ${result}`));
}
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
{{my-component delay=1}}
{{my-component delay=5}}
<button {{action "doIt"}}>{{delay}}s request</button> {{result}}
{
"version": "0.12.1",
"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.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-data": "2.12.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment