Hacker News new | past | comments | ask | show | jobs | submit login

async/await allows cooperative multitasking on a single thread: stay tuned for more...

The way it works is quite different from your example:

  async function gen_foo(): Awaitable<string> {
    echo "until we get to an await, eager execution\n";
    // ...
    await gen_bar();
    // this code is only executed after await
    return 'result';
  }
  $x = gen_foo(); // x is a handle, suspended at the point of its first 'await'
  await $x; // ... and now it's resumed
  
The benefit comes from being able to batch these async functions together:

  list($x, $y, $z) = await genva(
    gen_foo(), 
    gen_bar(),
    gen_baz();
  ); // genva creates a wait handle for awaiting its args

  // ... and when we get here $x, $y, and $z are all assigned



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: