Back to Hhvm

Vfkw

hphp/hack/manual/apis/Functions/HH.Asio/vfkw.md

latest3.2 KB
Original Source

:::info[Note] This is a point-in-time snapshot of the API documentation from January 2026. Going forward, we will not be maintaining a public copy of these references, and recommend users to refer to the built-in signature helpers available in the Hack LSP instead for complete and up-to-date information. :::

Returns an Awaitable of Vector of ResultOrExceptionWrapper after a filtering operation has been applied to each key/value pair in the provided KeyedTraversable

Hack
namespace HH\Asio;

function vfkw<Tk, T>(
  KeyedTraversable<Tk, T> $inputs,
  (function(Tk, T): Awaitable<bool>) $callable,
): Awaitable<Vector<ResultOrExceptionWrapper<T>>>;

This function is similar to vfk(), except the Vector in the returned Awaitable contains ResultOrExceptionWrappers instead of raw values.

This function is similar to Vector::filterWithKey(), but the mapping of the key/value pairs are done using Awaitables.

This function is called vfkw because we are returning a vector, doing a filtering operation that includes both keys and values, and each member of the Vector is wrapped by a ResultOrExceptionWrapper.

$callable must return an Awaitable of bool.

The ResultOrExceptionWrappers in the Vector of the returned Awaitable are not available until you await or join the returned Awaitable.

Parameters

Returns

Examples

basic-usage.hack
<<__EntryPoint>>
async function basic_usage_main(): Awaitable<void> {
  // Return all non-negative odd numbers
  // Positive evens and odds at every third index filtered out,
  // Negatives and zero cause exception
  $odds = await \HH\Asio\vfkw(
    Vector {-1, 0, 1, 2, 3, 4, 5},

    async ($idx, $val) ==> {
      if ($val <= 0) {
        throw new \Exception("$val is non-positive");
      } else {
        return ($idx % 3) && ($val % 2);
      }
    },
  );

  foreach ($odds as $result) {
    if ($result->isSucceeded()) {
      echo "Success: ";
      \var_dump($result->getResult());
    } else {
      echo "Failed: ";
      \var_dump($result->getException()->getMessage());
    }
  }
}
<!-- HHAPIDOC -->