📘 The then method in Perl 6 promises

📘 The then method in Raku promises

N. B. Perl 6 has been renamed to Raku. Click to read more.


The then method, when called on an already existing promise, creates another promise, whose code will be called after the “parent” promise is either kept or broken.

my $p = Promise.in(2);
my $t = $p.then({say "OK"}); # Prints this in two seconds

say "promised"; # Prints immediately
sleep 3;

say "done";

The code above produces the following output:

promised
OK
done

In another example, the promise is broken.

Promise.start({  # A new promise
    say 1 / 0    # generates an exception
                 # (the result of the division is used in say).
}).then({        # The code executed after the broken line.
    say "oops"
}).result        # This is required so that we wait until
                 # the result is known.

The only output here is the following:

oops

Leave a Reply