#

API Docs for: 3.10.3
Show: Inherited Protected Private Deprecated

# AsyncQueue Class

Extends EventTarget
Defined in: `async-queue/js/async-queue.js:11`
Module: async-queue

A specialized queue class that supports scheduling callbacks to execute sequentially, iteratively, even asynchronously.

Callbacks can be function refs or objects with the following keys. Only the `fn` key is required.

- `fn` -- The callback function
- `context` -- The execution context for the callbackFn.
- `args` -- Arguments to pass to callbackFn.
- `timeout` -- Millisecond delay before executing callbackFn. (Applies to each iterative execution of callback)
- `iterations` -- Number of times to repeat the callback.
- `until` -- Repeat the callback until this function returns true. This setting trumps iterations.
- `autoContinue` -- Set to false to prevent the AsyncQueue from executing the next callback in the Queue after the callback completes.
- `id` -- Name that can be used to get, promote, get the indexOf, or delete this callback.

## Constructor

### `AsyncQueue`

(

- `callback`

)

Defined in `async-queue/js/async-queue.js:11`

#### Parameters:

- `callback` Function | Object multiple

  0..n callbacks to seed the queue

- Index
- Methods
- Properties
- Events

## Item Index

### Methods

- _defAddFn
- _defExecFn
- _defPromoteFn
- _defRemoveFn
- _defShiftFn
- _execute
- _getFullType
- _getType
- _init
- _initEvents
- _monitor
- _parseType
- _prepare
- _publish
- _schedule
- add
- addTarget
- after
- before
- bubble
- detach
- detachAll
- fire
- getCallback
- getEvent
- getTargets
- indexOf
- isRunning
- next
- on
- once
- onceAfter
- parseType
- pause
- promote
- publish
- remove
- removeTarget
- run
- size
- stop
- subscribe deprecated
- unsubscribe deprecated
- unsubscribeAll deprecated

### Properties

- _running
- defaults static
- defaults

### Events

- complete

## Methods

### `_defAddFn`

(

- `e`

)
protected

Defined in `async-queue/js/async-queue.js:318`

Default functionality for the "add" event. Adds the callbacks in the event facade to the queue. Callbacks successfully added to the queue are present in the event's `added` property in the after phase.

#### Parameters:

- `e` Event

  the event object

### `_defExecFn`

(

- `e`

)
protected

Defined in `async-queue/js/async-queue.js:291`

Default functionality for the "execute" event. Executes the callback function

#### Parameters:

- `e` Event

  the event object

### `_defPromoteFn`

(

- `e`

)
protected

Defined in `async-queue/js/async-queue.js:436`

Default functionality for the "promote" event. Promotes the named callback to the head of the queue.

The event object will contain a property "callback", which holds the id of a callback or the callback object itself.

#### Parameters:

- `e` Event

  the custom event

### `_defRemoveFn`

(

- `e`

)
protected

Defined in `async-queue/js/async-queue.js:484`

Default functionality for the "remove" event. Removes the callback from the queue.

The event object will contain a property "callback", which holds the id of a callback or the callback object itself.

#### Parameters:

- `e` Event

  the custom event

### `_defShiftFn`

(

- `e`

)
protected

Defined in `async-queue/js/async-queue.js:155`

Default functionality for the "shift" event. Shifts the callback stored in the event object's callback property from the queue if it is the first item.

#### Parameters:

- `e` Event

  The event object

### `_execute`

(

- `callback`

)
Boolean protected

Defined in `async-queue/js/async-queue.js:240`

Handles the execution of callbacks. Returns a boolean indicating whether it is appropriate to continue running.

#### Parameters:

- `callback` Object

  the callback object to execute

#### Returns:

Boolean: whether the run loop should continue

### `_getFullType`

(

- `type`

)
String private

Inherited from EventTarget: `event-custom/js/event-target.js:586`

Returns the fully qualified type, given a short type string. That is, returns "foo:bar" when given "bar" if "foo" is the configured prefix.

NOTE: This method, unlike _getType, does no checking of the value passed in, and is designed to be used with the low level _publish() method, for critical path implementations which need to fast-track publish for performance reasons.

#### Parameters:

- `type` String

  The short type to prefix

#### Returns:

String: The prefixed type, if a prefix is set, otherwise the type passed in

### `_getType`

() private

Inherited from EventTarget: `event-custom/js/event-target.js:36`

If the instance has a prefix attribute and the event type is not prefixed, the instance prefix is applied to the supplied type.

### `_init`

() protected

Defined in `async-queue/js/async-queue.js:90`

Initializes the AsyncQueue instance properties and events.

### `_initEvents`

() protected

Defined in `async-queue/js/async-queue.js:113`

Initializes the instance events.

### `_monitor`

(

- `what`
- `eventType`
- `o`

)
private

Inherited from EventTarget: `event-custom/js/event-target.js:658`

This is the entry point for the event monitoring system. You can monitor 'attach', 'detach', 'fire', and 'publish'. When configured, these events generate an event. click -> clickattach, clickdetach, click_publish -- these can be subscribed to like other events to monitor the event system. Inividual published events can have monitoring turned on or off (publish can't be turned off before it it published) by setting the events 'monitor' config.

#### Parameters:

- `what` String

  'attach', 'detach', 'fire', or 'publish'

- `eventType` String | CustomEvent

  The prefixed name of the event being monitored, or the CustomEvent object.

- `o` Object

  Information about the event interaction, such as fire() args, subscription category, publish config

### `_parseType`

() private

Inherited from EventTarget: `event-custom/js/event-target.js:52`

Returns an array with the detach key (if provided), and the prefixed event name from _getType Y.on('detachcategory| menu:click', fn)

### `_prepare`

(

- `callback`

)
Function protected

Defined in `async-queue/js/async-queue.js:170`

Creates a wrapper function to execute the callback using the aggregated configuration generated by combining the static AsyncQueue.defaults, the instance defaults, and the specified callback settings.

The wrapper function is decorated with the callback configuration as properties for runtime modification.

#### Parameters:

- `callback` Object | Function

  the raw callback

#### Returns:

Function: a decorated function wrapper to execute the callback

### `_publish`

(

- `fullType`
- `etOpts`
- `ceOpts`

)
CustomEvent private

Inherited from EventTarget: `event-custom/js/event-target.js:610`

The low level event publish implementation. It expects all the massaging to have been done outside of this method. e.g. the `type` to `fullType` conversion. It's designed to be a fast path publish, which can be used by critical code paths to improve performance.

#### Parameters:

- `fullType` String

  The prefixed type of the event to publish.

- `etOpts` Object

  The EventTarget specific configuration to mix into the published event.

- `ceOpts` Object

  The publish specific configuration to mix into the published event.

#### Returns:

CustomEvent: The published event. If called without `etOpts` or `ceOpts`, this will be the default `CustomEvent` instance, and can be configured independently.

### `_schedule`

(

- `callback`

)
Boolean protected

Defined in `async-queue/js/async-queue.js:262`

Schedules the execution of asynchronous callbacks.

#### Parameters:

- `callback` Object

  the callback object to execute

#### Returns:

Boolean: whether the run loop should continue

### `add`

(

- `callback`

)
AsyncQueue chainable

Defined in `async-queue/js/async-queue.js:303`

Add any number of callbacks to the end of the queue. Callbacks may be provided as functions or objects.

#### Parameters:

- `callback` Function | Object multiple

  0..n callbacks

#### Returns:

AsyncQueue: the AsyncQueue instance

### `addTarget`

(

- `o`

)

Inherited from EventTarget: `event-custom/js/event-facade.js:455`

Registers another EventTarget as a bubble target. Bubble order is determined by the order registered. Multiple targets can be specified.

Events can only bubble if emitFacade is true.

Included in the event-custom-complex submodule.

#### Parameters:

- `o` EventTarget

  the target to add

### `after`

(

- `type`
- `fn`
- `[context]`
- `[arg*]`

)
EventHandle

Inherited from EventTarget: `event-custom/js/event-target.js:833`

Subscribe to a custom event hosted by this object. The supplied callback will execute after any listeners add via the subscribe method, and after the default function, if configured for the event, has executed.

#### Parameters:

- `type` String

  The name of the event

- `fn` Function

  The callback to execute in response to the event

- `[context]` Object optional

  Override `this` object in callback

- `[arg*]` Any optional

  0..n additional arguments to supply to the subscriber

#### Returns:

EventHandle: A subscription handle capable of detaching the subscription

### `before`

()

Inherited from EventTarget: `event-custom/js/event-target.js:870`

Executes the callback before a DOM event, custom event or method. If the first argument is a function, it is assumed the target is a method. For DOM and custom events, this is an alias for Y.on.

For DOM and custom events: type, callback, context, 0-n arguments

For methods: callback, object (method host), methodName, context, 0-n arguments

#### Returns:

detach handle

### `bubble`

(

- `evt`

)
Boolean

Inherited from EventTarget: `event-custom/js/event-facade.js:507`

Propagate an event. Requires the event-custom-complex module.

#### Parameters:

- `evt` CustomEvent

  the custom event to propagate

#### Returns:

Boolean: the aggregated return value from Event.Custom.fire

### `detach`

(

- `type`
- `fn`
- `context`

)
EventTarget

Inherited from EventTarget: `event-custom/js/event-target.js:346`

Detach one or more listeners the from the specified event

#### Parameters:

- `type` String | Object

  Either the handle to the subscriber or the type of event. If the type is not specified, it will attempt to remove the listener from all hosted events.

- `fn` Function

  The subscribed function to unsubscribe, if not supplied, all subscribers will be removed.

- `context` Object

  The custom object passed to subscribe. This is optional, but if supplied will be used to disambiguate multiple listeners that are the same (e.g., you subscribe many object using a function that lives on the prototype)

#### Returns:

EventTarget: the host

### `detachAll`

(

- `type`

)

Inherited from EventTarget: `event-custom/js/event-target.js:469`

Removes all listeners from the specified event. If the event type is not specified, all listeners from all hosted custom events will be removed.

#### Parameters:

- `type` String

  The type, or name of the event

### `fire`

(

- `type`
- `arguments`

)
EventTarget

Inherited from EventTarget: `event-custom/js/event-target.js:695`

Fire a custom event by name. The callback functions will be executed from the context specified when the event was created, and with the following parameters.

If the custom event object hasn't been created, then the event hasn't been published and it has no subscribers. For performance sake, we immediate exit in this case. This means the event won't bubble, so if the intention is that a bubble target be notified, the event must be published on this object first.

The first argument is the event type, and any additional arguments are passed to the listeners as parameters. If the first of these is an object literal, and the event is configured to emit an event facade, that object is mixed into the event facade and the facade is provided in place of the original object.

#### Parameters:

- `type` String | Object

  The type of the event, or an object that contains a 'type' property.

- `arguments` Object*

  an arbitrary set of parameters to pass to the handler. If the first of these is an object literal and the event is configured to emit an event facade, the event facade will replace that parameter after the properties the object literal contains are copied to the event facade.

#### Returns:

EventTarget: the event host

### `getCallback`

(

- `id`

)
Object

Defined in `async-queue/js/async-queue.js:397`

Retrieve a callback by its id. Useful to modify the configuration while the queue is running.

#### Parameters:

- `id` String

  the id assigned to the callback

#### Returns:

Object: the callback object

### `getEvent`

(

- `type`
- `prefixed`

)
CustomEvent

Inherited from EventTarget: `event-custom/js/event-target.js:814`

Returns the custom event of the provided type has been created, a falsy value otherwise

#### Parameters:

- `type` String

  the type, or name of the event

- `prefixed` String

  if true, the type is prefixed already

#### Returns:

CustomEvent: the custom event or null

### `getTargets`

()

Inherited from EventTarget: `event-custom/js/event-facade.js:479`

Returns an array of bubble targets for this object.

#### Returns:

EventTarget[]

### `indexOf`

(

- `callback`

)
Number

Defined in `async-queue/js/async-queue.js:376`

Returns the current index of a callback. Pass in either the id or callback function from getCallback.

#### Parameters:

- `callback` String | Function

  the callback or its specified id

#### Returns:

Number: index of the callback or -1 if not found

### `isRunning`

() Boolean

Defined in `async-queue/js/async-queue.js:280`

Determines if the queue is waiting for a callback to complete execution.

#### Returns:

Boolean: true if queue is waiting for a from any initiated transactions

### `next`

() Function

Defined in `async-queue/js/async-queue.js:129`

Returns the next callback needing execution. If a callback is configured to repeat via iterations or until, it will be returned until the completion criteria is met.

When the queue is empty, null is returned.

#### Returns:

Function: the callback to execute

### `on`

(

- `type`
- `fn`
- `[context]`
- `[arg*]`

)
EventHandle

Inherited from EventTarget: `event-custom/js/event-target.js:188`

Subscribe a callback function to a custom event fired by this object or from an object that bubbles its events to this object.

Callback functions for events published with `emitFacade = true` will receive an `EventFacade` as the first argument (typically named "e"). These callbacks can then call `e.preventDefault()` to disable the behavior published to that event's `defaultFn`. See the `EventFacade` API for all available properties and methods. Subscribers to non-`emitFacade` events will receive the arguments passed to `fire()` after the event name.

To subscribe to multiple events at once, pass an object as the first argument, where the key:value pairs correspond to the eventName:callback, or pass an array of event names as the first argument to subscribe to all listed events with the same callback.

Returning `false` from a callback is supported as an alternative to calling `e.preventDefault(); e.stopPropagation();`. However, it is recommended to use the event methods whenever possible.

#### Parameters:

- `type` String

  The name of the event

- `fn` Function

  The callback to execute in response to the event

- `[context]` Object optional

  Override `this` object in callback

- `[arg*]` Any optional

  0..n additional arguments to supply to the subscriber

#### Returns:

EventHandle: A subscription handle capable of detaching that subscription

### `once`

(

- `type`
- `fn`
- `[context]`
- `[arg*]`

)
EventHandle

Inherited from EventTarget: `event-custom/js/event-target.js:124`

Listen to a custom event hosted by this object one time. This is the equivalent to `on` except the listener is immediatelly detached when it is executed.

#### Parameters:

- `type` String

  The name of the event

- `fn` Function

  The callback to execute in response to the event

- `[context]` Object optional

  Override `this` object in callback

- `[arg*]` Any optional

  0..n additional arguments to supply to the subscriber

#### Returns:

EventHandle: A subscription handle capable of detaching the subscription

### `onceAfter`

(

- `type`
- `fn`
- `[context]`
- `[arg*]`

)
EventHandle

Inherited from EventTarget: `event-custom/js/event-target.js:146`

Listen to a custom event hosted by this object one time. This is the equivalent to `after` except the listener is immediatelly detached when it is executed.

#### Parameters:

- `type` String

  The name of the event

- `fn` Function

  The callback to execute in response to the event

- `[context]` Object optional

  Override `this` object in callback

- `[arg*]` Any optional

  0..n additional arguments to supply to the subscriber

#### Returns:

EventHandle: A subscription handle capable of detaching that subscription

### `parseType`

(

- `type`
- `[pre=this._yuievt.config.prefix]`

)
Array

Inherited from EventTarget: `event-custom/js/event-target.js:168`

Available since 3.3.0

Takes the type parameter passed to 'on' and parses out the various pieces that could be included in the type. If the event type is passed without a prefix, it will be expanded to include the prefix one is supplied or the event target is configured with a default prefix.

#### Parameters:

- `type` String

  the type

- `[pre=this._yuievt.config.prefix]` String optional

  the prefix

#### Returns:

Array: an array containing: * the detach category, if supplied, * the prefixed event type, * whether or not this is an after listener, * the supplied event type

### `pause`

() AsyncQueue chainable

Defined in `async-queue/js/async-queue.js:342`

Pause the execution of the queue after the execution of the current callback completes. If called from code outside of a queued callback, clears the timeout for the pending callback. Paused queue can be restarted with q.run()

#### Returns:

AsyncQueue: the AsyncQueue instance

### `promote`

(

- `callback`

)
AsyncQueue chainable

Defined in `async-queue/js/async-queue.js:411`

Promotes the named callback to the top of the queue. If a callback is currently executing or looping (via until or iterations), the promotion is scheduled to occur after the current callback has completed.

#### Parameters:

- `callback` String | Object

  the callback object or a callback's id

#### Returns:

AsyncQueue: the AsyncQueue instance

### `publish`

(

- `type`
- `opts`

)
CustomEvent

Inherited from EventTarget: `event-custom/js/event-target.js:493`

Creates a new custom event of the specified type. If a custom event by that name already exists, it will not be re-created. In either case the custom event is returned.

#### Parameters:

- `type` String

  the type, or name of the event

- `opts` Object

  optional config params. Valid properties are:

  - 'broadcast': whether or not the YUI instance and YUI global are notified when the event is fired (false)
  - 'bubbles': whether or not this event bubbles (true) Events can only bubble if emitFacade is true.
  - 'context': the default execution context for the listeners (this)
  - 'defaultFn': the default function to execute when this event fires if preventDefault was not called
  - 'emitFacade': whether or not this event emits a facade (false)
  - 'prefix': the prefix for this targets events, e.g., 'menu' in 'menu:click'
  - 'fireOnce': if an event is configured to fire once, new subscribers after the fire will be notified immediately.
  - 'async': fireOnce event listeners will fire synchronously if the event has already fired unless async is true.
  - 'preventable': whether or not preventDefault() has an effect (true)
  - 'preventedFn': a function that is executed when preventDefault is called
  - 'queuable': whether or not this event can be queued during bubbling (false)
  - 'silent': if silent is true, debug messages are not provided for this event.
  - 'stoppedFn': a function that is executed when stopPropagation is called

  - 'monitored': specifies whether or not this event should send notifications about when the event has been attached, detached, or published.
  - 'type': the event type (valid option if not provided as the first parameter to publish)

#### Returns:

CustomEvent: the custom event

### `remove`

(

- `callback`

)
AsyncQueue chainable

Defined in `async-queue/js/async-queue.js:458`

Removes the callback from the queue. If the queue is active, the removal is scheduled to occur after the current callback has completed.

#### Parameters:

- `callback` String | Object

  the callback object or a callback's id

#### Returns:

AsyncQueue: the AsyncQueue instance

### `removeTarget`

(

- `o`

)

Inherited from EventTarget: `event-custom/js/event-facade.js:489`

Removes a bubble target

#### Parameters:

- `o` EventTarget

  the target to remove

### `run`

() AsyncQueue chainable

Defined in `async-queue/js/async-queue.js:207`

Sets the queue in motion. All queued callbacks will be executed in order unless pause() or stop() is called or if one of the callbacks is configured with autoContinue: false.

#### Returns:

AsyncQueue: the AsyncQueue instance

### `size`

() Number

Defined in `async-queue/js/async-queue.js:501`

Returns the number of callbacks in the queue.

#### Returns:

Number:

### `stop`

() AsyncQueue chainable

Defined in `async-queue/js/async-queue.js:362`

Stop and clear the queue after the current execution of the current callback completes.

#### Returns:

AsyncQueue: the AsyncQueue instance

### `subscribe`

() deprecated

Inherited from EventTarget: `event-custom/js/event-target.js:336`

Deprecated: use on

subscribe to an event

### `unsubscribe`

() deprecated

Inherited from EventTarget: `event-custom/js/event-target.js:459`

Deprecated: use detach

detach a listener

### `unsubscribeAll`

(

- `type`

)
deprecated

Inherited from EventTarget: `event-custom/js/event-target.js:480`

Deprecated: use detachAll

Removes all listeners from the specified event. If the event type is not specified, all listeners from all hosted custom events will be removed.

#### Parameters:

- `type` String

  The type, or name of the event

## Properties

### `_running`

Boolean | Object true for synchronous callback execution, the return handle from Y.later for async callbacks. Otherwise false. protected

Defined in `async-queue/js/async-queue.js:79`

Used to indicate the queue is currently executing a callback.

### `defaults`

Object static

Defined in `async-queue/js/async-queue.js:53`

Static default values used to populate callback configuration properties. Preconfigured defaults include:

- `autoContinue`: `true`
- `iterations`: 1
- `timeout`: 10 (10ms between callbacks)
- `until`: (function to run until iterations <= 0)

### `defaults`

Object

Defined in `async-queue/js/async-queue.js:101`

Callback defaults for this instance. Static defaults that are not overridden are also included.

## Events

### `complete`

Defined in `async-queue/js/async-queue.js:230`

Event fired after the last queued callback is executed.