Skip to content

Instantly share code, notes, and snippets.

@ykaragol
Last active April 9, 2018 12:34
Show Gist options
  • Save ykaragol/21e4a95489490e40299eb8f38d58e0f8 to your computer and use it in GitHub Desktop.
Save ykaragol/21e4a95489490e40299eb8f38d58e0f8 to your computer and use it in GitHub Desktop.
ember-concurrency as closure function
import Ember from 'ember';
export default Ember.Component.extend({
actions:{
submit(){
this.get('submit')(this.get('x')).then((retval)=>{
this.set('multiplicationResult', retval);
})
}
}
});
import Ember from 'ember';
import {task, timeout} from 'ember-concurrency';
function aFunctionWhichReturnsPromise(val){
return new Ember.RSVP.Promise((r)=>{
setTimeout(()=>{
r(`${val}*2 multiplication result is ${val*2}`);
}, 5000);
})
}
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
x:1,
myAsyncTask: task(function *(val){
this.set('log1', `task started with ${val}`);
let valueToReturn
yield aFunctionWhichReturnsPromise(val).then((promiseResult)=>{
valueToReturn = promiseResult
});
this.set('log2', `task is ending with ${val}`);
return valueToReturn
}).drop(),
actions:{
submit(val){
return this.get('myAsyncTask').perform(val);
},
increase(){
this.incrementProperty('x');
}
}
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
{{my-component x=x submit=(action 'submit') increase=(action 'increase')}}
<hr>
<br>
{{log1}}
<br>
{{log2}}
<br>
<br>
x: {{x}} <br>
<br>
<button onclick={{action increase}}>Increase</button> <br>
<br>
<button onclick={{action 'submit'}}>Submit</button>
<br>
{{multiplicationResult}}
{
"version": "0.13.0",
"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.16.2",
"ember-template-compiler": "2.16.2",
"ember-testing": "2.16.2"
},
"addons": {
"ember-concurrency":"0.8.13"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment