Я пытаюсь реализовать Rx-поток/наблюдаемое слияние с Hack async, а основной шаг описывается заголовком. Версия кода этого шага будет выглядеть примерно так:Преобразование коллекции Awaitables в упорядоченный по времени AsyncGenerator в Hack
<?hh // strict
async function foo(Awaitable<Iterable<T>> $collection): Awaitable<void> {
$ordered_generator = async_collection_to_gen($collection) // (**)
foreach($ordered_generator await as $v) {
// do something with each awaited value in the time-order they are resolved
}
}
Однако, после обдумывает над этим, я не думаю, что может написать снимавшийся (**)
функцию. Я обнаружил, что в какой-то момент реализации, которые я пробовал, требуют функциональности, сходной с JS, которая разрешает, когда первая из коллекции Promises разрешает/отклоняет. Тем не менее, все Hack's Awaitable collection helpers создать Ожидаемый полностью решена коллекция. Кроме того, Hack не позволяет нам звонить await
с async function
с, что также оказалось необходимым.
Возможно ли кому-нибудь знать?