Skip to content

Instantly share code, notes, and snippets.

@raido
Last active May 13, 2016 08:27
Show Gist options
  • Save raido/d95f44cc91c8d60d9b682123bb7ee359 to your computer and use it in GitHub Desktop.
Save raido/d95f44cc91c8d60d9b682123bb7ee359 to your computer and use it in GitHub Desktop.
New Twiddle
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
import Ember from 'ember';
const { RSVP } = Ember;
export default Ember.Service.extend({
worker: Ember.Object.extend({
execute() {
return new RSVP.resolve()
}
}),
currentWorker: null,
doWork() {
// THIS PATH WORKS FINE
/*return this.set('currentWorker', this.get('worker').create()).execute().finally(() => {
this.set('currentWorker', null);
});*/
// THIS DOES NOT
/*return this.set('currentWorker', this.get('worker').create()).execute().then(() => {
// ADDING then there, will result could not call set on destroyed object
console.log("This is called last")
}).finally(() => {
console.log("this is called first");
this.set('currentWorker', null);
});*/
// Wrapping it in another Promise with runloop works
return new RSVP.Promise((resolve, reject) => { this.set('currentWorker', this.get('worker').create()).execute().then(() => {
// ADDING then there, will result could not call set on destroyed object
console.log("This is called first")
Ember.run(null, resolve);
}) }).finally(() => {
console.log("this is called last");
this.set('currentWorker', null);
});
}
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br>
import Resolver from '../../resolver';
import config from '../../config/environment';
const resolver = Resolver.create();
resolver.namespace = {
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix
};
export default resolver;
import resolver from './helpers/resolver';
import {
setResolver
} from 'ember-qunit';
setResolver(resolver);
import { moduleFor, test } from 'ember-qunit';
moduleFor('service:my-service', 'TODO: put something here', {
// Specify the other units that are required for this test.
// needs: ['service:foo']
});
test('it should do work', function(assert) {
let service = this.subject();
service.doWork().then(() => {
assert.ok('it should get here');
});
});
{
"version": "0.8.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": true
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.5.1",
"ember-data": "2.5.2",
"ember-template-compiler": "2.5.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment