首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bcryptjs -使用同步还是异步解决方案?

Bcryptjs -使用同步还是异步解决方案?
EN

Stack Overflow用户
提问于 2020-02-10 02:32:17
回答 2查看 163关注 0票数 1

我正在尝试实现一个简单的登录/身份验证应用程序,我正在使用bcryptjs,以便在将用户密码放入数据库之前对其进行加盐/散列处理。在文档中,它提供了对密码进行散列的同步方式和异步方式。我想我的问题是,我如何知道异步或同步版本是否适合我的应用程序,以及在决定实现同步或异步解决方案时应该考虑什么?

EN

回答 2

Stack Overflow用户

发布于 2020-02-10 03:09:29

一般来说,异步任务优先于同步任务,以增加用户与应用程序的交互。同步任务按照代码行的编写顺序执行,因此会阻塞分配给处理的线程。因为JavaScript是单线程的,所以整个事件循环都是阻塞的。

正如in their documentation所解释的,bcrypt也是如此。

为什么建议使用异步模式而不是同步模式?

如果您在一个简单的脚本上使用bcrypt,那么使用sync模式是非常好的。但是,如果您在服务器上使用bcrypt,则建议使用异步模式。这是因为bcrypt执行的散列是CPU密集型的,所以同步版本将阻塞事件循环,并阻止您的应用程序为任何其他入站请求或事件提供服务。异步版本使用不会阻塞主事件循环的线程池。

票数 1
EN

Stack Overflow用户

发布于 2020-02-10 03:26:01

当异步可用时,我总是选择它,因为它允许您(实际上)同时分派多个任务。然而,在这种情况下(身份验证),它似乎无关紧要(因为身份验证必须在您的其他代码获取进一步的私有数据之前完成)。

一个要问的问题是:在身份验证挂起时,您还需要做些什么?如果您能想到一些可以在身份验证挂起时完成的事情,这才是异步真正闪亮的地方,因为您可以在身份验证的延迟期间做这件事。

如果选择异步,请确保理解promises工作方式,我将使用await让脚本的其他部分等待身份验证-承诺直接解析为变量。如果您不知道这些事情,并且很匆忙,那么只有这样我才会满足于使用同步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60139954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档