Future::map

(PHP 8.6+, True Async 1.0)

public function map(callable $map): Future

Трансформирует результат Future с помощью callback-функции. Callback принимает значение завершённого Future и возвращает новое значение. Аналог then() в Promise-based API. Если исходный Future завершился с ошибкой, callback не вызывается, и ошибка передаётся в новый Future.

Параметры

map — функция трансформации. Принимает результат Future, возвращает новое значение. Сигнатура: function(mixed $value): mixed.

Возвращаемое значение

Future — новый Future, содержащий трансформированный результат.

Примеры

Пример #1 Трансформация результата

<?php

use Async\Future;

$future = Future::completed(5)
    ->map(fn(int $x) => $x * 2)
    ->map(fn(int $x) => "Результат: $x");

echo $future->await(); // Результат: 10

Пример #2 Цепочка трансформаций при асинхронной загрузке

<?php

use Async\Future;

$future = \Async\async(function() {
    return file_get_contents('https://api.example.com/data');
})
->map(fn(string $json) => json_decode($json, true))
->map(fn(array $data) => $data['users'])
->map(fn(array $users) => count($users));

$count = $future->await();
echo "Количество пользователей: $count\n";

См. также