我正在尝试实现一个简单的登录/身份验证应用程序,我正在使用bcryptjs,以便在将用户密码放入数据库之前对其进行加盐/散列处理。在文档中,它提供了对密码进行散列的同步方式和异步方式。我想我的问题是,我如何知道异步或同步版本是否适合我的应用程序,以及在决定实现同步或异步解决方案时应该考虑什么?
发布于 2020-02-10 03:09:29
一般来说,异步任务优先于同步任务,以增加用户与应用程序的交互。同步任务按照代码行的编写顺序执行,因此会阻塞分配给处理的线程。因为JavaScript是单线程的,所以整个事件循环都是阻塞的。
正如in their documentation所解释的,bcrypt也是如此。
为什么建议使用异步模式而不是同步模式?
如果您在一个简单的脚本上使用bcrypt,那么使用sync模式是非常好的。但是,如果您在服务器上使用bcrypt,则建议使用异步模式。这是因为bcrypt执行的散列是CPU密集型的,所以同步版本将阻塞事件循环,并阻止您的应用程序为任何其他入站请求或事件提供服务。异步版本使用不会阻塞主事件循环的线程池。
发布于 2020-02-10 03:26:01
https://stackoverflow.com/questions/60139954
复制相似问题