为什么有些库会公开执行相同操作的方法,但每个方法都在同步/异步上下文中?

问题描述 投票:0回答:1

一些库公开了两种本质上做同样事情的方法,但其中一个在异步上下文中运行,另一个在同步上下文中运行。

一些例子是:

unlink
来自
fs/promises
unlinkSync
来自
fs
compare
compareSync
hash
hashSync
来自 bcrypt

他们为什么选择这样做?根据我的应用程序的上下文,使用同步或异步有什么优点和缺点吗?

javascript node.js typescript
1个回答
0
投票

使用同步或异步有什么优点和缺点,具体取决于 我的申请背景?

当然。同步操作会阻止事件循环,这意味着在发生这种情况时没有其他代码可以运行。假设您有一些昂贵的哈希操作(一个有很多轮的操作)并且您使用

hashSync

这将在计算哈希时阻止事件循环,并且在使用 Node.js 运行 Web 服务器的情况下,这意味着在此期间发送到服务器的任何请求都将被延迟,直到该操作完成。这就是为什么您将

await
与哈希一起使用,这样您就可以告诉 node.js 不要阻塞事件循环,并在哈希操作完成后运行其后的代码。

© www.soinside.com 2019 - 2024. All rights reserved.