HTTP.Promise (http_fetch v0.1.0)
Represents an asynchronous HTTP operation, similar to a JavaScript Promise.
It wraps an underlying Task
and provides an await
function.
Summary
Functions
Awaits the completion of the HTTP promise.
Attaches callbacks for the resolution or rejection of the Promise.
Returns a new HTTP.Promise
for chaining.
Types
@type success_callback_fun() :: (HTTP.Response.t() -> any())
@type t() :: %HTTP.Promise{task: Task.t()}
Functions
@spec await(t()) :: {:ok, HTTP.Response.t()} | {:error, term()}
Awaits the completion of the HTTP promise.
Returns:
{:ok, %HTTP.Response{}}
on successful completion.{:error, reason}
if the request fails or is aborted.
@spec then(t(), success_callback_fun(), error_callback_fun() | nil) :: t()
Attaches callbacks for the resolution or rejection of the Promise.
Returns a new HTTP.Promise
for chaining.
Arguments:
promise
: The currentHTTP.Promise
instance.success_fun
: A 1-arity function to be called if the promise resolves successfully.It receives the `HTTP.Response.t()` as an argument. Can return a value, `{:ok, value}`, `{:error, reason}`, or another `HTTP.Promise`.
error_fun
: An optional 1-arity function to be called if the promise is rejected.It receives the reason for rejection as an argument. Can return a value, `{:ok, value}`, `{:error, reason}`, or another `HTTP.Promise`.
Returns:
%HTTP.Promise{}
: A new promise representing the outcome of the callbacks.