ember-concurrency
Version:
Improved concurrency/async primitives for Ember.js
1,212 lines (1,209 loc) • 43.2 kB
TypeScript
export function taskComputed(fn: any): (proto: any, key: any, ...args: any[]) => void | TypedPropertyDescriptor<any>;
export let taskFactorySymbol: string;
export namespace propertyModifiers {
/**
* 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](/docs/examples/route-tasks/1)
*
* @method restartable
* @memberof TaskProperty
* @instance
*/
function restartable(): {
restartable(): any;
/**
* Configures the task to run task instances one-at-a-time in
* the order they were `.perform()`ed. Sets default
* maxConcurrency to 1.
*
* @method enqueue
* @memberof TaskProperty
* @instance
*/
enqueue(): any;
/**
* 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.
*
* @method drop
* @memberof TaskProperty
* @instance
*/
drop(): any;
/**
* Configures the task to drop all but the most recently
* performed {@linkcode TaskInstance }.
*
* @method keepLatest
* @memberof TaskProperty
* @instance
*/
keepLatest(): any;
/**
* 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).
* {@linkcode TaskProperty#restartable .restartable},
* {@linkcode TaskProperty#enqueue .enqueue}, and
* {@linkcode TaskProperty#drop .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](/docs/examples/ajax-throttling)
*
* The example below uses a task with `maxConcurrency(3)` to limit
* the number of concurrent AJAX requests (for anyone using this task)
* to 3.
*
* ```js
* doSomeAjax: task(function * (url) {
* return fetch(url);
* }).maxConcurrency(3),
*
* elsewhere() {
* this.doSomeAjax.perform("http://www.example.com/json");
* },
* ```
*
* @method maxConcurrency
* @memberof TaskProperty
* @param {Number} n The maximum number of concurrently running tasks
* @instance
*/
maxConcurrency(n: number): any;
/**
* Adds this task to a TaskGroup so that concurrency constraints
* can be shared between multiple tasks.
*
* [See the Task Group docs for more information](/docs/task-groups)
*
* @method group
* @memberof TaskProperty
* @param {String} groupPath A path to the TaskGroup property
* @instance
*/
group(taskGroupPath: any): any;
/**
* Activates lifecycle events, allowing Evented host objects to react to task state
* changes.
*
* ```js
*
* export default Component.extend({
* uploadTask: task(function* (file) {
* // ... file upload stuff
* }).evented(),
*
* uploadedStarted: on('uploadTask:started', function(taskInstance) {
* this.analytics.track("User Photo: upload started");
* }),
* });
* ```
*
* @method evented
* @memberof TaskProperty
* @instance
*/
evented(): any;
/**
* 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"
*
* @method debug
* @memberof TaskProperty
* @instance
*/
debug(): any;
/**
* Configures the task to call the passed in callback for derived state updates,
* overriding the default derived state tracking. You may call with `null` to
* completely opt-out of derived state tracking.
*
* @method onState
* @memberof TaskProperty
* @param {function?} callback Callback to be called. Receives an object argument with the new state.
* @instance
*/
onState(callback: Function | null): any;
};
/**
* Configures the task to run task instances one-at-a-time in
* the order they were `.perform()`ed. Sets default
* maxConcurrency to 1.
*
* @method enqueue
* @memberof TaskProperty
* @instance
*/
function enqueue(): {
/**
* 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](/docs/examples/route-tasks/1)
*
* @method restartable
* @memberof TaskProperty
* @instance
*/
restartable(): any;
enqueue(): any;
/**
* 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.
*
* @method drop
* @memberof TaskProperty
* @instance
*/
drop(): any;
/**
* Configures the task to drop all but the most recently
* performed {@linkcode TaskInstance }.
*
* @method keepLatest
* @memberof TaskProperty
* @instance
*/
keepLatest(): any;
/**
* 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).
* {@linkcode TaskProperty#restartable .restartable},
* {@linkcode TaskProperty#enqueue .enqueue}, and
* {@linkcode TaskProperty#drop .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](/docs/examples/ajax-throttling)
*
* The example below uses a task with `maxConcurrency(3)` to limit
* the number of concurrent AJAX requests (for anyone using this task)
* to 3.
*
* ```js
* doSomeAjax: task(function * (url) {
* return fetch(url);
* }).maxConcurrency(3),
*
* elsewhere() {
* this.doSomeAjax.perform("http://www.example.com/json");
* },
* ```
*
* @method maxConcurrency
* @memberof TaskProperty
* @param {Number} n The maximum number of concurrently running tasks
* @instance
*/
maxConcurrency(n: number): any;
/**
* Adds this task to a TaskGroup so that concurrency constraints
* can be shared between multiple tasks.
*
* [See the Task Group docs for more information](/docs/task-groups)
*
* @method group
* @memberof TaskProperty
* @param {String} groupPath A path to the TaskGroup property
* @instance
*/
group(taskGroupPath: any): any;
/**
* Activates lifecycle events, allowing Evented host objects to react to task state
* changes.
*
* ```js
*
* export default Component.extend({
* uploadTask: task(function* (file) {
* // ... file upload stuff
* }).evented(),
*
* uploadedStarted: on('uploadTask:started', function(taskInstance) {
* this.analytics.track("User Photo: upload started");
* }),
* });
* ```
*
* @method evented
* @memberof TaskProperty
* @instance
*/
evented(): any;
/**
* 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"
*
* @method debug
* @memberof TaskProperty
* @instance
*/
debug(): any;
/**
* Configures the task to call the passed in callback for derived state updates,
* overriding the default derived state tracking. You may call with `null` to
* completely opt-out of derived state tracking.
*
* @method onState
* @memberof TaskProperty
* @param {function?} callback Callback to be called. Receives an object argument with the new state.
* @instance
*/
onState(callback: Function | null): any;
};
/**
* 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.
*
* @method drop
* @memberof TaskProperty
* @instance
*/
function drop(): {
/**
* 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](/docs/examples/route-tasks/1)
*
* @method restartable
* @memberof TaskProperty
* @instance
*/
restartable(): any;
/**
* Configures the task to run task instances one-at-a-time in
* the order they were `.perform()`ed. Sets default
* maxConcurrency to 1.
*
* @method enqueue
* @memberof TaskProperty
* @instance
*/
enqueue(): any;
drop(): any;
/**
* Configures the task to drop all but the most recently
* performed {@linkcode TaskInstance }.
*
* @method keepLatest
* @memberof TaskProperty
* @instance
*/
keepLatest(): any;
/**
* 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).
* {@linkcode TaskProperty#restartable .restartable},
* {@linkcode TaskProperty#enqueue .enqueue}, and
* {@linkcode TaskProperty#drop .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](/docs/examples/ajax-throttling)
*
* The example below uses a task with `maxConcurrency(3)` to limit
* the number of concurrent AJAX requests (for anyone using this task)
* to 3.
*
* ```js
* doSomeAjax: task(function * (url) {
* return fetch(url);
* }).maxConcurrency(3),
*
* elsewhere() {
* this.doSomeAjax.perform("http://www.example.com/json");
* },
* ```
*
* @method maxConcurrency
* @memberof TaskProperty
* @param {Number} n The maximum number of concurrently running tasks
* @instance
*/
maxConcurrency(n: number): any;
/**
* Adds this task to a TaskGroup so that concurrency constraints
* can be shared between multiple tasks.
*
* [See the Task Group docs for more information](/docs/task-groups)
*
* @method group
* @memberof TaskProperty
* @param {String} groupPath A path to the TaskGroup property
* @instance
*/
group(taskGroupPath: any): any;
/**
* Activates lifecycle events, allowing Evented host objects to react to task state
* changes.
*
* ```js
*
* export default Component.extend({
* uploadTask: task(function* (file) {
* // ... file upload stuff
* }).evented(),
*
* uploadedStarted: on('uploadTask:started', function(taskInstance) {
* this.analytics.track("User Photo: upload started");
* }),
* });
* ```
*
* @method evented
* @memberof TaskProperty
* @instance
*/
evented(): any;
/**
* 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"
*
* @method debug
* @memberof TaskProperty
* @instance
*/
debug(): any;
/**
* Configures the task to call the passed in callback for derived state updates,
* overriding the default derived state tracking. You may call with `null` to
* completely opt-out of derived state tracking.
*
* @method onState
* @memberof TaskProperty
* @param {function?} callback Callback to be called. Receives an object argument with the new state.
* @instance
*/
onState(callback: Function | null): any;
};
/**
* Configures the task to drop all but the most recently
* performed {@linkcode TaskInstance }.
*
* @method keepLatest
* @memberof TaskProperty
* @instance
*/
function keepLatest(): {
/**
* 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](/docs/examples/route-tasks/1)
*
* @method restartable
* @memberof TaskProperty
* @instance
*/
restartable(): any;
/**
* Configures the task to run task instances one-at-a-time in
* the order they were `.perform()`ed. Sets default
* maxConcurrency to 1.
*
* @method enqueue
* @memberof TaskProperty
* @instance
*/
enqueue(): any;
/**
* 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.
*
* @method drop
* @memberof TaskProperty
* @instance
*/
drop(): any;
keepLatest(): any;
/**
* 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).
* {@linkcode TaskProperty#restartable .restartable},
* {@linkcode TaskProperty#enqueue .enqueue}, and
* {@linkcode TaskProperty#drop .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](/docs/examples/ajax-throttling)
*
* The example below uses a task with `maxConcurrency(3)` to limit
* the number of concurrent AJAX requests (for anyone using this task)
* to 3.
*
* ```js
* doSomeAjax: task(function * (url) {
* return fetch(url);
* }).maxConcurrency(3),
*
* elsewhere() {
* this.doSomeAjax.perform("http://www.example.com/json");
* },
* ```
*
* @method maxConcurrency
* @memberof TaskProperty
* @param {Number} n The maximum number of concurrently running tasks
* @instance
*/
maxConcurrency(n: number): any;
/**
* Adds this task to a TaskGroup so that concurrency constraints
* can be shared between multiple tasks.
*
* [See the Task Group docs for more information](/docs/task-groups)
*
* @method group
* @memberof TaskProperty
* @param {String} groupPath A path to the TaskGroup property
* @instance
*/
group(taskGroupPath: any): any;
/**
* Activates lifecycle events, allowing Evented host objects to react to task state
* changes.
*
* ```js
*
* export default Component.extend({
* uploadTask: task(function* (file) {
* // ... file upload stuff
* }).evented(),
*
* uploadedStarted: on('uploadTask:started', function(taskInstance) {
* this.analytics.track("User Photo: upload started");
* }),
* });
* ```
*
* @method evented
* @memberof TaskProperty
* @instance
*/
evented(): any;
/**
* 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"
*
* @method debug
* @memberof TaskProperty
* @instance
*/
debug(): any;
/**
* Configures the task to call the passed in callback for derived state updates,
* overriding the default derived state tracking. You may call with `null` to
* completely opt-out of derived state tracking.
*
* @method onState
* @memberof TaskProperty
* @param {function?} callback Callback to be called. Receives an object argument with the new state.
* @instance
*/
onState(callback: Function | null): any;
};
/**
* 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).
* {@linkcode TaskProperty#restartable .restartable},
* {@linkcode TaskProperty#enqueue .enqueue}, and
* {@linkcode TaskProperty#drop .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](/docs/examples/ajax-throttling)
*
* The example below uses a task with `maxConcurrency(3)` to limit
* the number of concurrent AJAX requests (for anyone using this task)
* to 3.
*
* ```js
* doSomeAjax: task(function * (url) {
* return fetch(url);
* }).maxConcurrency(3),
*
* elsewhere() {
* this.doSomeAjax.perform("http://www.example.com/json");
* },
* ```
*
* @method maxConcurrency
* @memberof TaskProperty
* @param {Number} n The maximum number of concurrently running tasks
* @instance
*/
function maxConcurrency(n: number): {
/**
* 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](/docs/examples/route-tasks/1)
*
* @method restartable
* @memberof TaskProperty
* @instance
*/
restartable(): any;
/**
* Configures the task to run task instances one-at-a-time in
* the order they were `.perform()`ed. Sets default
* maxConcurrency to 1.
*
* @method enqueue
* @memberof TaskProperty
* @instance
*/
enqueue(): any;
/**
* 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.
*
* @method drop
* @memberof TaskProperty
* @instance
*/
drop(): any;
/**
* Configures the task to drop all but the most recently
* performed {@linkcode TaskInstance }.
*
* @method keepLatest
* @memberof TaskProperty
* @instance
*/
keepLatest(): any;
maxConcurrency(n: number): any;
/**
* Adds this task to a TaskGroup so that concurrency constraints
* can be shared between multiple tasks.
*
* [See the Task Group docs for more information](/docs/task-groups)
*
* @method group
* @memberof TaskProperty
* @param {String} groupPath A path to the TaskGroup property
* @instance
*/
group(taskGroupPath: any): any;
/**
* Activates lifecycle events, allowing Evented host objects to react to task state
* changes.
*
* ```js
*
* export default Component.extend({
* uploadTask: task(function* (file) {
* // ... file upload stuff
* }).evented(),
*
* uploadedStarted: on('uploadTask:started', function(taskInstance) {
* this.analytics.track("User Photo: upload started");
* }),
* });
* ```
*
* @method evented
* @memberof TaskProperty
* @instance
*/
evented(): any;
/**
* 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"
*
* @method debug
* @memberof TaskProperty
* @instance
*/
debug(): any;
/**
* Configures the task to call the passed in callback for derived state updates,
* overriding the default derived state tracking. You may call with `null` to
* completely opt-out of derived state tracking.
*
* @method onState
* @memberof TaskProperty
* @param {function?} callback Callback to be called. Receives an object argument with the new state.
* @instance
*/
onState(callback: Function | null): any;
};
/**
* Adds this task to a TaskGroup so that concurrency constraints
* can be shared between multiple tasks.
*
* [See the Task Group docs for more information](/docs/task-groups)
*
* @method group
* @memberof TaskProperty
* @param {String} groupPath A path to the TaskGroup property
* @instance
*/
function group(taskGroupPath: any): {
/**
* 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](/docs/examples/route-tasks/1)
*
* @method restartable
* @memberof TaskProperty
* @instance
*/
restartable(): any;
/**
* Configures the task to run task instances one-at-a-time in
* the order they were `.perform()`ed. Sets default
* maxConcurrency to 1.
*
* @method enqueue
* @memberof TaskProperty
* @instance
*/
enqueue(): any;
/**
* 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.
*
* @method drop
* @memberof TaskProperty
* @instance
*/
drop(): any;
/**
* Configures the task to drop all but the most recently
* performed {@linkcode TaskInstance }.
*
* @method keepLatest
* @memberof TaskProperty
* @instance
*/
keepLatest(): any;
/**
* 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).
* {@linkcode TaskProperty#restartable .restartable},
* {@linkcode TaskProperty#enqueue .enqueue}, and
* {@linkcode TaskProperty#drop .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](/docs/examples/ajax-throttling)
*
* The example below uses a task with `maxConcurrency(3)` to limit
* the number of concurrent AJAX requests (for anyone using this task)
* to 3.
*
* ```js
* doSomeAjax: task(function * (url) {
* return fetch(url);
* }).maxConcurrency(3),
*
* elsewhere() {
* this.doSomeAjax.perform("http://www.example.com/json");
* },
* ```
*
* @method maxConcurrency
* @memberof TaskProperty
* @param {Number} n The maximum number of concurrently running tasks
* @instance
*/
maxConcurrency(n: number): any;
group(taskGroupPath: any): any;
/**
* Activates lifecycle events, allowing Evented host objects to react to task state
* changes.
*
* ```js
*
* export default Component.extend({
* uploadTask: task(function* (file) {
* // ... file upload stuff
* }).evented(),
*
* uploadedStarted: on('uploadTask:started', function(taskInstance) {
* this.analytics.track("User Photo: upload started");
* }),
* });
* ```
*
* @method evented
* @memberof TaskProperty
* @instance
*/
evented(): any;
/**
* 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"
*
* @method debug
* @memberof TaskProperty
* @instance
*/
debug(): any;
/**
* Configures the task to call the passed in callback for derived state updates,
* overriding the default derived state tracking. You may call with `null` to
* completely opt-out of derived state tracking.
*
* @method onState
* @memberof TaskProperty
* @param {function?} callback Callback to be called. Receives an object argument with the new state.
* @instance
*/
onState(callback: Function | null): any;
};
/**
* Activates lifecycle events, allowing Evented host objects to react to task state
* changes.
*
* ```js
*
* export default Component.extend({
* uploadTask: task(function* (file) {
* // ... file upload stuff
* }).evented(),
*
* uploadedStarted: on('uploadTask:started', function(taskInstance) {
* this.analytics.track("User Photo: upload started");
* }),
* });
* ```
*
* @method evented
* @memberof TaskProperty
* @instance
*/
function evented(): {
/**
* 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](/docs/examples/route-tasks/1)
*
* @method restartable
* @memberof TaskProperty
* @instance
*/
restartable(): any;
/**
* Configures the task to run task instances one-at-a-time in
* the order they were `.perform()`ed. Sets default
* maxConcurrency to 1.
*
* @method enqueue
* @memberof TaskProperty
* @instance
*/
enqueue(): any;
/**
* 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.
*
* @method drop
* @memberof TaskProperty
* @instance
*/
drop(): any;
/**
* Configures the task to drop all but the most recently
* performed {@linkcode TaskInstance }.
*
* @method keepLatest
* @memberof TaskProperty
* @instance
*/
keepLatest(): any;
/**
* 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).
* {@linkcode TaskProperty#restartable .restartable},
* {@linkcode TaskProperty#enqueue .enqueue}, and
* {@linkcode TaskProperty#drop .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](/docs/examples/ajax-throttling)
*
* The example below uses a task with `maxConcurrency(3)` to limit
* the number of concurrent AJAX requests (for anyone using this task)
* to 3.
*
* ```js
* doSomeAjax: task(function * (url) {
* return fetch(url);
* }).maxConcurrency(3),
*
* elsewhere() {
* this.doSomeAjax.perform("http://www.example.com/json");
* },
* ```
*
* @method maxConcurrency
* @memberof TaskProperty
* @param {Number} n The maximum number of concurrently running tasks
* @instance
*/
maxConcurrency(n: number): any;
/**
* Adds this task to a TaskGroup so that concurrency constraints
* can be shared between multiple tasks.
*
* [See the Task Group docs for more information](/docs/task-groups)
*
* @method group
* @memberof TaskProperty
* @param {String} groupPath A path to the TaskGroup property
* @instance
*/
group(taskGroupPath: any): any;
evented(): any;
/**
* 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"
*
* @method debug
* @memberof TaskProperty
* @instance
*/
debug(): any;
/**
* Configures the task to call the passed in callback for derived state updates,
* overriding the default derived state tracking. You may call with `null` to
* completely opt-out of derived state tracking.
*
* @method onState
* @memberof TaskProperty
* @param {function?} callback Callback to be called. Receives an object argument with the new state.
* @instance
*/
onState(callback: Function | null): any;
};
/**
* 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"
*
* @method debug
* @memberof TaskProperty
* @instance
*/
function debug(): {
/**
* 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](/docs/examples/route-tasks/1)
*
* @method restartable
* @memberof TaskProperty
* @instance
*/
restartable(): any;
/**
* Configures the task to run task instances one-at-a-time in
* the order they were `.perform()`ed. Sets default
* maxConcurrency to 1.
*
* @method enqueue
* @memberof TaskProperty
* @instance
*/
enqueue(): any;
/**
* 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.
*
* @method drop
* @memberof TaskProperty
* @instance
*/
drop(): any;
/**
* Configures the task to drop all but the most recently
* performed {@linkcode TaskInstance }.
*
* @method keepLatest
* @memberof TaskProperty
* @instance
*/
keepLatest(): any;
/**
* 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).
* {@linkcode TaskProperty#restartable .restartable},
* {@linkcode TaskProperty#enqueue .enqueue}, and
* {@linkcode TaskProperty#drop .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](/docs/examples/ajax-throttling)
*
* The example below uses a task with `maxConcurrency(3)` to limit
* the number of concurrent AJAX requests (for anyone using this task)
* to 3.
*
* ```js
* doSomeAjax: task(function * (url) {
* return fetch(url);
* }).maxConcurrency(3),
*
* elsewhere() {
* this.doSomeAjax.perform("http://www.example.com/json");
* },
* ```
*
* @method maxConcurrency
* @memberof TaskProperty
* @param {Number} n The maximum number of concurrently running tasks
* @instance
*/
maxConcurrency(n: number): any;
/**
* Adds this task to a TaskGroup so that concurrency constraints
* can be shared between multiple tasks.
*
* [See the Task Group docs for more information](/docs/task-groups)
*
* @method group
* @memberof TaskProperty
* @param {String} groupPath A path to the TaskGroup property
* @instance
*/
group(taskGroupPath: any): any;
/**
* Activates lifecycle events, allowing Evented host objects to react to task state
* changes.
*
* ```js
*
* export default Component.extend({
* uploadTask: task(function* (file) {
* // ... file upload stuff
* }).evented(),
*
* uploadedStarted: on('uploadTask:started', function(taskInstance) {
* this.analytics.track("User Photo: upload started");
* }),
* });
* ```
*
* @method evented
* @memberof TaskProperty
* @instance
*/
evented(): any;
debug(): any;
/**
* Configures the task to call the passed in callback for derived state updates,
* overriding the default derived state tracking. You may call with `null` to
* completely opt-out of derived state tracking.
*
* @method onState
* @memberof TaskProperty
* @param {function?} callback Callback to be called. Receives an object argument with the new state.
* @instance
*/
onState(callback: Function | null): any;
};
/**
* Configures the task to call the passed in callback for derived state updates,
* overriding the default derived state tracking. You may call with `null` to
* completely opt-out of derived state tracking.
*
* @method onState
* @memberof TaskProperty
* @param {function?} callback Callback to be called. Receives an object argument with the new state.
* @instance
*/
function onState(callback: Function | null): {
/**
* 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](/docs/examples/route-tasks/1)
*
* @method restartable
* @memberof TaskProperty
* @instance
*/
restartable(): any;
/**
* Configures the task to run task instances one-at-a-time in
* the order they were `.perform()`ed. Sets default
* maxConcurrency to 1.
*
* @method enqueue
* @memberof TaskProperty
* @instance
*/
enqueue(): any;
/**
* 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.
*
* @method drop
* @memberof TaskProperty
* @instance
*/
drop(): any;
/**
* Configures the task to drop all but the most recently
* performed {@linkcode TaskInstance }.
*
* @method keepLatest
* @memberof TaskProperty
* @instance
*/
keepLatest(): any;
/**
* 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).
* {@linkcode TaskProperty#restartable .restartable},
* {@linkcode TaskProperty#enqueue .enqueue}, and
* {@linkcode TaskProperty#drop .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](/docs/examples/ajax-throttling)
*
* The example below uses a task with `maxConcurrency(3)` to limit
* the number of concurrent AJAX requests (for anyone using this task)
* to 3.
*
* ```js
* doSomeAjax: task(function * (url) {
* return fetch(url);
* }).maxConcurrency(3),
*
* elsewhere() {
* this.doSomeAjax.perform("http://www.example.com/json");
* },
* ```
*
* @method maxConcurrency
* @memberof TaskProperty
* @param {Number} n The maximum number of concurrently running tasks
* @instance
*/
maxConcurrency(n: number): any;
/**
* Adds this task to a TaskGroup so that concurrency constraints
* can be shared between multiple tasks.
*
* [See the Task Group docs for more information](/docs/task-groups)
*
* @method group
* @memberof TaskProperty
* @param {String} groupPath A path to the TaskGroup property
* @instance
*/
group(taskGroupPath: any): any;
/**
* Activates lifecycle events, allowing Evented host objects to react to task state
* changes.
*
* ```js
*
* export default Component.extend({
* uploadTask: task(function* (file) {
* // ... file upload stuff
* }).evented(),
*
* uploadedStarted: on('uploadTask:started', function(taskInstance) {
* this.analytics.track("User Photo: upload started");
* }),
* });
* ```
*
* @method evented
* @memberof TaskProperty
* @instance
*/
evented(): any;
/**
* 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"
*
* @method debug
* @memberof TaskProperty
* @instance
*/
debug(): any;
onState(callback: Function | null): any;
};
}
/**
A {@link TaskProperty} is the Computed Property-like object returned
from the {@linkcode task} function. You can call Task Modifier methods
on this object to configure the behavior of the {@link Task}.
See [Managing Task Concurrency](/docs/task-concurrency) for an
overview of all the different task modifiers you can use and how
they impact automatic cancelation / enqueueing of task instances.
{@link TaskProperty} is only used for supporting "classic" Ember objects.
When using Native JavaScript or TypeScript classes, you will use [task decorators](/docs/task-decorators)
on methods instead.
@class TaskProperty
*/
export class TaskProperty {
}
export class TaskGroupProperty {
}
//# sourceMappingURL=task-properties.d.ts.map