This repository was archived by the owner on Jan 9, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
ThreadedPromise Examples
Doge edited this page Sep 1, 2021
·
6 revisions
$pool = new PromisePool($this);
$promise = new ThreadedPromise(
function (): ThreadedPromise {
return new ThreadedPromise(fn(string $response) => var_dump("a nested promise"));
},
function (ThreadedPromise $promise): void {
/**
* You can convert the ThreadedPromise to a regular Promise via @link ThreadedPromise::asPromise()
*/
$promise->settle();
}
);
$pool->addPromise($promise);
$pool = new PromisePool($this);
$promise = new ThreadedPromise(
function (): string {
$request = Internet::getURL("https://api.coinbase.com/v2/currencies");
return $request->getBody();
}
);
$promise
->then(fn(string $response): array => json_decode($response, true))
->then(fn(array $response) => var_dump($response))
->catch(fn(PromiseError $error) => var_dump($error->getMessage()));
$pool->addPromise($promise);
$pool = new PromisePool($this);
$promise = new ThreadedPromise(
function (): string {
$request = Internet::getURL("https://v2.jokeapi.dev/joke/Any");
return $request->getBody();
},
function (array $response): void {
foreach ($this->getServer()->getOnlinePlayers() as $onlinePlayer) {
$onlinePlayer->sendMessage($response["setup"]);
$onlinePlayer->sendMessage($response["delivery"]);
}
}
);
$promise
->then(fn(string $response): array => json_decode($response, true))
->catch(fn(PromiseError $error) => var_dump($error->getMessage()));
$pool->addPromise($promise);