Class: TaskProperty

TaskProperty

new TaskProperty()

A TaskProperty is the Computed Property-like object returned from the task function. You can call Task Modifier methods on this object to configure the behavior of the Task.

See Managing Task Concurrency for an overview of all the different task modifiers you can use and how they impact automatic cancelation / enqueueing of task instances.

Source:

Methods

cancelOn(eventNames*)

This behaves like the task(...).on() modifier, but instead will cause the task to be canceled if any of the specified events fire on the parent object.

See the Live Example

Parameters:
Name Type Description
eventNames* String
Source:

debug()

Logs lifecycle events to aid in debugging unexpected Task behavior. Presently only logs cancelation events and the reason for the cancelation, e.g. "TaskInstance 'doStuff' was canceled because the object it lives on was destroyed or unrendered"

Source:

drop()

Configures the task to immediately cancel (i.e. drop) any task instances performed when the task is already running at maxConcurrency. Sets default maxConcurrency to 1.

Source:

enqueue()

Configures the task to run task instances one-at-a-time in the order they were .perform()ed. Sets default maxConcurrency to 1.

Source:

evented()

Activates lifecycle events, allowing Evented host objects to react to task state changes.


export default Component.extend({
  uploadTask: task(function* (file) {
    // ... file upload stuff
  }).evented(),

  uploadedStarted: on('uploadTask:started', function(taskInstance) {
    this.get('analytics').track("User Photo: upload started");
  }),
});
Source:

group(groupPath)

Adds this task to a TaskGroup so that concurrency constraints can be shared between multiple tasks.

See the Task Group docs for more information

Parameters:
Name Type Description
groupPath String

A path to the TaskGroup property

Source:

keepLatest()

Configures the task to drop all but the most recently performed TaskInstance.

Source:

maxConcurrency(n)

Sets the maximum number of task instances that are allowed to run at the same time. By default, with no task modifiers applied, this number is Infinity (there is no limit to the number of tasks that can run at the same time). .restartable(), .enqueue(), and .drop() set the default maxConcurrency to 1, but you can override this value to set the maximum number of concurrently running tasks to a number greater than 1.

See the AJAX Throttling example

The example below uses a task with maxConcurrency(3) to limit the number of concurrent AJAX requests (for anyone using this task) to 3.

doSomeAjax: task(function * (url) {
  return Ember.$.getJSON(url).promise();
}).maxConcurrency(3),

elsewhere() {
  this.get('doSomeAjax').perform("http://www.example.com/json");
},
Parameters:
Name Type Description
n Number

The maximum number of concurrently running tasks

Source:

on(eventNames*)

Calling task(...).on(eventName) configures the task to be automatically performed when the specified events fire. In this way, it behaves like Ember.on.

You can use task(...).on('init') to perform the task when the host object is initialized.

export default Ember.Component.extend({
  pollForUpdates: task(function * () {
    // ... this runs when the Component is first created
    // because we specified .on('init')
  }).on('init'),

  handleFoo: task(function * (a, b, c) {
    // this gets performed automatically if the 'foo'
    // event fires on this Component,
    // e.g., if someone called component.trigger('foo')
  }).on('foo'),
});

See the Writing Tasks Docs for more info

Parameters:
Name Type Description
eventNames* String
Source:

restartable()

Configures the task to cancel old currently task instances to make room for a new one to perform. Sets default maxConcurrency to 1.

See the Live Example

Source: