Improve this Doc View Source

## Overview

AngularJS's wrapper for `window.setTimeout`. The `fn` function is wrapped into a try/catch block and delegates any exceptions to $exceptionHandler service.

The return value of calling `$timeout` is a promise, which will be resolved when the delay has passed and the timeout function, if provided, is executed.

To cancel a timeout request, call `$timeout.cancel(promise)`.

In tests you can use `$timeout.flush()` to synchronously flush the queue of deferred functions.

If you only want a promise that will be resolved after some specified delay then you can call `$timeout` without the `fn` function.

## Usage

`$timeout([fn], [delay], [invokeApply], [Pass]);`

### Arguments

Param | Type | Details
--- | --- | ---
fn (optional) | function()= | A function, whose execution should be delayed.
delay (optional) | number | Delay in milliseconds. (default: 0)
invokeApply (optional) | boolean | If set to `false` skips model dirty checking, otherwise will invoke `fn` within the $apply block. (default: true)
Pass (optional) | * | additional parameters to the executed function.

### Returns

Promise | Promise that will be resolved when the timeout is reached. The promise will be resolved with the return value of the `fn` function.

## Methods

- ###

  `cancel([promise]);`

  Cancels a task associated with the `promise`. As a result of this, the promise will be resolved with a rejection.

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  promise (optional) | Promise | Promise returned by the `$timeout` function.

  #### Returns

  boolean | Returns `true` if the task hasn't executed yet and was successfully canceled.