Provided by: libgraphql-perl_0.54-1_all bug

NAME

       GraphQL::AsyncIterator - iterator objects that return promise to next result

SYNOPSIS

         use GraphQL::AsyncIterator;
         my $i = GraphQL::AsyncIterator->new(
           promise_code => $pc,
         );
         # also works when publish happens before next_p called
         my $promised_value = $i->next_p;
         $i->publish('hi'); # now $promised_value will be fulfilled

         $i->close_tap; # now next_p will return undef

DESCRIPTION

       Encapsulates the asynchronous event-handling needed for the publish/subscribe behaviour
       needed by GraphQL::Subscription.

ATTRIBUTES

   promise_code
       A hash-ref matching "PromiseCode" in GraphQL::Type::Library, which must provide the "new"
       key.

METHODS

   publish(@values)
       Resolves the relevant promise with @values.

   error(@values)
       Rejects the relevant promise with @values.

   next_p
       Returns either a "Promise" in GraphQL::Type::Library of the next value, or "undef" when
       closed off. Do not call this if a previous promised next value has not been settled, as a
       queue is not maintained.

       The promise will have each of the sets of handlers added by "map_then" appended.

   close_tap
       Switch to being closed off. "next_p" will return "undef" as soon as it runs out of
       "publish"ed values. "publish" will throw an exception.  NB This will not cause the
       settling of any outstanding promise returned by "next_p".

   map_then($then, $catch)
       Adds the handlers to this object's list of handlers, which will be attached to promises
       returned by "next_p". Returns self.