---
name: "IO::Async::Future"
section: "3pm"
platform: "linux"
package: "libio-async-perl"
version: "0.804-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/IO::Async::Future"
---

# IO::Async::Future(3pm)

use Future with IO::Async

## NAME

"IO::Async::Future" - use Future with IO::Async

## SYNOPSIS

```
   use Future::AsyncAwait;
   use IO::Async::Loop;
   my $loop = IO::Async::Loop->new;
   my $future = $loop->new_future;
   $loop->watch_time( after => 3, code => sub { $future->done( "Done" ) } );
   print await( $future ), "\n";
```

## DESCRIPTION

This subclass of Future stores a reference to the IO::Async::Loop instance that created it, allowing the `"await"` method to block until the Future is ready. These objects should not be constructed directly; instead the `"new_future"` method on the containing Loop should be used.

For a full description on how to use Futures, see the Future documentation.

## CONSTRUCTORS

New `"IO::Async::Future"` objects should be constructed by using the following methods on the `"Loop"`. For more detail see the IO::Async::Loop documentation.

```
   $future = $loop->new_future;
```

Returns a new pending Future.

```
   $future = $loop->delay_future( %args );
```

Returns a new Future that will become done at a given time.

```
   $future = $loop->timeout_future( %args );
```

Returns a new Future that will become failed at a given time.

## METHODS

### loop

```
   $loop = $future->loop;
```

Returns the underlying IO::Async::Loop object.

### done\_later

```
   $future->done_later( @result );
```

A shortcut to calling the `"done"` method in a `"later"` idle watch on the underlying Loop object. Ensures that a returned Future object is not ready immediately, but will wait for the next IO round.

Like `"done"`, returns `$future` itself to allow easy chaining.

### fail\_later

```
   $future->fail_later( $exception, @details );
```

A shortcut to calling the `"fail"` method in a `"later"` idle watch on the underlying Loop object. Ensures that a returned Future object is not ready immediately, but will wait for the next IO round.

Like `"fail"`, returns `$future` itself to allow easy chaining.

## AUTHOR

Paul Evans \<leonerd@leonerd.org.uk\>
