Guest User

Untitled

a guest
May 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. import Ember from 'ember';
  2. import { task, timeout } from 'ember-concurrency';
  3.  
  4. const counters = {
  5. enqueue: 0,
  6. restartable: 0,
  7. drop: 0,
  8. };
  9.  
  10. function fetch(type) {
  11. return new Promise(function(resolve) {
  12. Ember.run.later(() => {
  13. var counter = counters[type] += 1;
  14. resolve(`Fetch ${counter}`)
  15. }, 1200);
  16. });
  17. }
  18.  
  19. export default Ember.Controller.extend({
  20. appName: 'Ember Conccurency',
  21.  
  22. permission: Ember.Object.create({ isActive: false }),
  23. setting: Ember.Object.create({ isActive: true }),
  24. thing: Ember.Object.create({ isActive: false }),
  25.  
  26. actions: {
  27. togglePermission(obj) {
  28. obj.toggleProperty('isActive');
  29. this.get('updatePermission').perform();
  30. },
  31.  
  32. toggleSetting(obj) {
  33. obj.toggleProperty('isActive');
  34. this.get('updateSetting').perform();
  35. },
  36.  
  37. toggleThing(obj) {
  38. obj.toggleProperty('isActive');
  39. this.get('updateThing').perform();
  40. },
  41. },
  42.  
  43. updatePermission: task(function*() {
  44. const response = yield fetch('enqueue');
  45. this.set('permissionResponse', response);
  46. }).enqueue(),
  47.  
  48. updateSetting: task(function*() {
  49. // yield timeout(300); // with debounce
  50.  
  51. const response = yield fetch('restartable');
  52. this.set('settingResponse', response);
  53. }).restartable(),
  54.  
  55. updateThing: task(function*() {
  56. const response = yield fetch('drop');
  57. this.set('thingResponse', response);
  58. }).drop(),
  59.  
  60. });
Add Comment
Please, Sign In to add comment