В чем разница между async await и async hooks в узле.JS


Async_hooks были введены в качестве экспериментальных в узле v8. Поскольку имя похоже на ES2017 async , может показаться, что они каким-то образом связаны. Так ли это? Если да, то каким образом (дополняющим или конкурирующим)?

1 2

1 ответ:

Async_hooks API делает его легче для вас, чтобы отслеживать Ваши ресурсы. Вы начинаете с инициализации его с необязательным объектом любого из: init, before, after и destroy. Получение ресурса запускает один из таких обратных вызовов. Смысл async_hooks заключается в том, чтобы обеспечить более эффективное отслеживание асинхронных ресурсов и их обратных вызовов.

async await позволяет писать код, который имеет многообещающие асинхронные части в более привычном синхронном виде.

Для пример:

async function Double() {
  let result = await PromiseWhichReturnsNumber();

  return result * 2;
}

В приведенной выше функции async функция приостановит выполнение в PromiseWhichReturnsNumber() до тех пор, пока обещание не будет выполнено (и результаты не будут назначены result).

Эти 2 концепции решают различные проблемы:

  1. async await позволяет писать обещания "синхронно".
  2. async_hooks позволяет отслеживать асинхронные ресурсы.