Future::map
(PHP 8.6+, True Async 1.0)
php
public function map(callable $map): FutureTransformiert das Ergebnis des Future mithilfe einer Callback-Funktion. Der Callback empfängt den Wert des abgeschlossenen Future und gibt einen neuen Wert zurück. Analog zu then() in Promise-basierten APIs. Wenn das ursprüngliche Future mit einem Fehler abgeschlossen wurde, wird der Callback nicht aufgerufen, und der Fehler wird an das neue Future weitergegeben.
Parameter
map — die Transformationsfunktion. Empfängt das Future-Ergebnis, gibt einen neuen Wert zurück. Signatur: function(mixed $value): mixed.
Rückgabewert
Future — ein neues Future mit dem transformierten Ergebnis.
Beispiele
Beispiel #1 Das Ergebnis transformieren
php
<?php
use Async\Future;
use Async\FutureState;
$future = Future::completed(5)
->map(fn(int $x) => $x * 2)
->map(fn(int $x) => "Ergebnis: $x");
echo $future->await(); // Ergebnis: 10Beispiel #2 Transformationskette für asynchrones Laden
php
<?php
use Async\Future;
use Async\FutureState;
$state = new FutureState();
$source = new Future($state);
\Async\spawn(function() use ($state) {
$state->complete(file_get_contents('https://api.example.com/data'));
});
$future = $source
->map(fn(string $json) => json_decode($json, true))
->map(fn(array $data) => $data['users'])
->map(fn(array $users) => count($users));
$count = $future->await();
echo "Anzahl der Benutzer: $count\n";Siehe auch
- Future::catch — Einen Future-Fehler behandeln
- Future::finally — Callback bei Future-Abschluss
- Future::await — Das Ergebnis abwarten