Task Modifiers

Starting with ember-concurrency v2.2.0, public Task Modifier APIs have been added to allow for custom task modifiers to be registered from third-party addons and application code to provide behavior for specific situations not suited to inclusion within ember-concurrency's core itself.

Task modifiers have been a concept built-in to `ember-concurrency` since the beginning. However, until `0.7.19` they were only specifyable within `ember-concurrency` internals, and not extendable by users. `0.7.19` added the ability to specify new modifiers as prototype extensions on `TaskProperty`. Unfortunately, `TaskProperty` is inherently tied to Ember internals and is not used when using decorators, and using prototype extensions does not make clear what modifiers exist, so the `getModifier`, `hasModifier`, and `registerModifier` APIs were introduced to provide a way to manage modifiers and make them discoverable.

Defining a custom task modifier

Let's say we want to build a benchmarking modifier to help us get a sense for how long our tasks are running.

Now that we have a new modifier defined, we can apply it to any tasks that we wish and have it apply the behavior we built. Let's see it in action!

More about Task Modifiers

The behavior and implementation of task modifier APIs are defined further in the Task Modifiers RFC. Additionally, the API for TaskFactory is documented here.