Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Ember from 'ember';
- import { task, timeout } from 'ember-concurrency';
- const counters = {
- enqueue: 0,
- restartable: 0,
- drop: 0,
- };
- function fetch(type) {
- return new Promise(function(resolve) {
- Ember.run.later(() => {
- var counter = counters[type] += 1;
- resolve(`Fetch ${counter}`)
- }, 1200);
- });
- }
- export default Ember.Controller.extend({
- appName: 'Ember Conccurency',
- permission: Ember.Object.create({ isActive: false }),
- setting: Ember.Object.create({ isActive: true }),
- thing: Ember.Object.create({ isActive: false }),
- actions: {
- togglePermission(obj) {
- obj.toggleProperty('isActive');
- this.get('updatePermission').perform();
- },
- toggleSetting(obj) {
- obj.toggleProperty('isActive');
- this.get('updateSetting').perform();
- },
- toggleThing(obj) {
- obj.toggleProperty('isActive');
- this.get('updateThing').perform();
- },
- },
- updatePermission: task(function*() {
- const response = yield fetch('enqueue');
- this.set('permissionResponse', response);
- }).enqueue(),
- updateSetting: task(function*() {
- // yield timeout(300); // with debounce
- const response = yield fetch('restartable');
- this.set('settingResponse', response);
- }).restartable(),
- updateThing: task(function*() {
- const response = yield fetch('drop');
- this.set('thingResponse', response);
- }).drop(),
- });
Add Comment
Please, Sign In to add comment