### Constructor

# Dex Future finally_loop

#### Declaration [src]

    DexFuture*
    dex_future_finally_loop (
      DexFuture* future,
      DexFutureCallback callback,
      gpointer callback_data,
      GDestroyNotify callback_data_destroy
    )

#### Description [src]

Asynchronously calls `callback` when `future` rejects or resolves.

This is similar to `dex_future_finally()` except that it will call `callback` multiple times as each returned `DexFuture` rejects or resolves, allowing for infinite loops.

#### Parameters

`future`

  Type: `DexFuture`

  A `DexFuture`.

  The called function takes ownership of the data, and is responsible for freeing it.

`callback`

  Type: `DexFutureCallback`

  A callback to execute.

`callback_data`

  Type: `gpointer`

  Closure data for `callback`.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

`callback_data_destroy`

  Type: `GDestroyNotify`

  Destroy notify for `callback_data`.

#### Return value

Type: `DexFuture`

A `DexFuture`.

The caller of the function takes ownership of the data, and is responsible for freeing it.