Ich versuche, Rx Stream/beobachtbare Zusammenführung mit Hack Async zu implementieren, und ein Kernschritt wird durch den Titel beschrieben. Eine Code-Version dieser Schritt würde wie folgt aussehen:Konvertieren einer Sammlung von Erwarteter in einen zeitgesteuerten AsyncGenerator in 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
}
}
jedoch, nachdem es über grübelt, ich glaube nicht, dass ich kann die Lieblings (**)
Funktion schreiben. Ich habe festgestellt, dass die Implementierungen, die ich ausprobiert habe, irgendwann die gleiche Funktionalität wie JS Promise.race
benötigen, die löst, wenn der erste einer Sammlung Promises auflöst/ablehnt. Alle Hack's Awaitable collection helpers erstellen jedoch eine von einer vollständig aufgelöste Sammlung. Desweiteren erlaubt Hack nicht, dass wir keine await
Async-Anrufe von async function
s haben, die ich auch für nötig befunden habe.
Ist es jemandes Wissen möglich?