Skip to content

Instantly share code, notes, and snippets.

@alexlafroscia
Last active April 29, 2020 14:32
Show Gist options
  • Save alexlafroscia/33787a129d376cf818ee47919913b380 to your computer and use it in GitHub Desktop.
Save alexlafroscia/33787a129d376cf818ee47919913b380 to your computer and use it in GitHub Desktop.
EC lastSuccessful Test
import Controller from '@ember/controller';
import { timeout } from "ember-concurrency";
import { task, lastValue } from "ember-concurrency-decorators";
export default class ApplicationController extends Controller {
wasCalled = false;
@lastValue('myTask') value = "Not Yet Started";
@task myTask = function* () {
if (this.wasCalled) {
return "Last To Start";
} else {
this.wasCalled = true;
this.myTask.perform();
yield timeout(1000);
return "Last To Complete"
}
}
}
<h1>Ember Concurrency <code>lastSuccessful</code></h1>
<p>Which is considered the "last successful" task instance?</p>
<ol>
<li>The last one <i>started</i> that exited successfully?</li>
<li>The last one <i>to successfully complete</i>?</li>
</ol>
<hr>
Value: {{if this.myTask.isRunning "Running..." this.value}}
<br><br>
<button {{on "click" (perform this.myTask)}} disabled={{eq this.myTask.performCount 2}}>
Start Task
</button>
{
"version": "0.17.0",
"EmberENV": {
"FEATURES": {},
"_TEMPLATE_ONLY_GLIMMER_COMPONENTS": false,
"_APPLICATION_TEMPLATE_WRAPPER": true,
"_JQUERY_INTEGRATION": true
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.17.0",
"ember-template-compiler": "3.17.0",
"ember-testing": "3.17.0"
},
"addons": {
"@glimmer/component": "1.0.0",
"ember-concurrency": "1.1.7",
"ember-concurrency-decorators": "1.0.0",
"ember-truth-helpers": "2.1.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment