• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

在Node.js中锁定承诺链接

node.js 来源:Qiulang 4次浏览

我有一个REST API,它会一个接一个地执行一系列异步任务。代码如下所示:在Node.js中锁定承诺链接

asyncFunc1() 
.then(asyncFunc2()) 
.then(asyncFunc3()) 
.then(asyncFunc4()) 

第一步将执行一些数据库查询,最后一步将更新数据库。当然(因为我来自java/c + +背景),我会在我的承诺链的开头添加一个锁,以确保与数据库的交互受到保护。

但我是新来的Node.js和它的异步处理单线程模式困惑我在这里。因此,我应该在每个涉及数据库操作的步骤中添加一个锁,在我的承诺链的开头链接或添加锁,或者我根本不需要锁?

——– ———更新

正如一位评论和答复指出了这一点,我写我的错链(我的实际代码是正确的,虽然,只是一个签署表明我是新来的Node.js:$)

asyncFunc1() 
    .then(asyncFunc2) 
    .then(asyncFunc3) 
    .then(asyncFunc4) 

其实我在我的链的开头使用Redlock,我不知道这是一个好主意。拉胡尔辛格提供的答案表明我不需要锁定!


===========解决方案如下:

当您使用新的承诺承诺()被调用,因此所有 你的函数为您创建它们,而不是当你 连锁它们实际上被执行。

您链功能应该像

asyncFunc1().then(asyncFunc2).then()... 

的asyncFunc1应该是返回一个承诺,而不是一个承诺本身的功能。

诺兰劳森就以承诺一脸这article更多


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)