В чем разница между async await и async_hooks в Node.js

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

1 ответ

Решение

API async_hooks упрощает отслеживание ваших ресурсов. Вы начинаете с инициализации его необязательным объектом любого из: 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 позволяет отслеживать асинхронные ресурсы.
Другие вопросы по тегам