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