X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftalk-event-driven-programming-in-perl;a=blobdiff_plain;f=slides.html;fp=slides.html;h=6d589b4552d0e1edcb157ecabcd8f1e42d7d6b5f;hp=d86ee03aae1a18331b5ee606173fcdcf85011bb0;hb=fa698f7b8f498a04b0394f5cadc2cadf0a6fb21a;hpb=4b5e8e86c925ec0b05a5e31dc1374585a903dfc3 diff --git a/slides.html b/slides.html index d86ee03..6d589b4 100644 --- a/slides.html +++ b/slides.html @@ -445,6 +445,56 @@ while (1) { - [`Mojo::Reactor::Poll`](https://metacpan.org/source/Mojo::Reactor::Poll) ] +--- +name: not-all-roses +class: center, middle + +![Thorns](img/thorn.jpg) + +## Watch out for the thorns... + +??? +There are some special considerations you need to take when writing event-driven code. + +--- +class: center, middle + +## Exceptions for error handling + +--- +class: center, middle + +### Problem: No exception handler up the call stack + +--- +class: ex-exceptions + +## Rule: Don't die/throw in event handlers. + +-- +### Error callback pattern + +```perl +do_something_asynchronously( + callback => sub { ... }, + on_error => sub { ... }, +); +``` + +--- +class: ex-exceptions + +## Rule: Don't die/throw in event handlers. + +### Use promises + +```perl +my $promise = do_something_asynchronously(); + +$promise->on_done(sub { ... }); +$promise->on_fail(sub { ... }); +``` + --- class: center, middle