调用回调函数后关闭数据库连接。

3

我不确定这段代码的流程

doStuff()
  .then(() => { callback(); })
  .catch(err => callback(err))
  .then(db.close);

在这种情况下,db.close会被调用吗?

1
只有在没有错误发生的情况下,才会一直执行Yes。如果因为错误而调用catch,则会执行最后一个then。 - Sumit Surana
@Sumit 谢谢! - ivanyoo
1个回答

2

假设 callback(err) 没有抛出异常,那么它总是会被调用。

以下代码与上述代码几乎等效(略有不同的错误处理),并且更加简洁:

doStuff()
    .then(callback, callback)
    .then(db.close)

另外值得一提的是,如果db是一个类的实例,并且close()通过this关键字依赖于它,那么以这种方式传递可能会有问题,因为当它自己被调用时,上下文会丢失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接