Node.js 中的 async await 和 async_hooks 有什么区别
What is the difference between async await and async_hooks in Node.js
async_hooks were introduced as experimental in Node v8. Because the name is similar to ES2017 async 看起来它们可能在某种程度上相关。他们是吗?如果是,以何种方式(互补或竞争)?
async_hooks API 让您更容易追踪您的资源。您首先使用以下任意对象的可选对象对其进行初始化:init
、before
、after
和 destroy
。获取资源会触发这些回调之一。 async_hooks
的要点是允许更好地跟踪异步资源及其回调。
async await
允许您以更熟悉的同步方式编写代码,其中包含基于承诺的异步部分。
例如:
async function Double() {
let result = await PromiseWhichReturnsNumber();
return result * 2;
}
在上面的 async
函数中,函数将在 PromiseWhichReturnsNumber()
处暂停执行,直到 promise 被解析(并将结果分配给 result
)。
这 2 个概念正在解决不同的问题:
async await
允许您以 "synchronous" 的方式编写 promise。
async_hooks
允许您跟踪异步资源。
async_hooks were introduced as experimental in Node v8. Because the name is similar to ES2017 async 看起来它们可能在某种程度上相关。他们是吗?如果是,以何种方式(互补或竞争)?
async_hooks API 让您更容易追踪您的资源。您首先使用以下任意对象的可选对象对其进行初始化:init
、before
、after
和 destroy
。获取资源会触发这些回调之一。 async_hooks
的要点是允许更好地跟踪异步资源及其回调。
async await
允许您以更熟悉的同步方式编写代码,其中包含基于承诺的异步部分。
例如:
async function Double() {
let result = await PromiseWhichReturnsNumber();
return result * 2;
}
在上面的 async
函数中,函数将在 PromiseWhichReturnsNumber()
处暂停执行,直到 promise 被解析(并将结果分配给 result
)。
这 2 个概念正在解决不同的问题:
async await
允许您以 "synchronous" 的方式编写 promise。async_hooks
允许您跟踪异步资源。