我使用Promise.all()对具有相同事务的MySQL数据库执行许多查询,因此所有查询都是并行执行的,如果发生任何不好的事情,我会回滚该事务。但一位朋友说,并行运行查询是一种糟糕的做法,因为如果查询失败,事务回滚,将会有其他查询仍在MySQL中运行,这些查询使用相同的事务,如果它们没有找到事务,它们将在MySQL本身中查找错误。
他建议按顺序执行查询,这样如果发生了不好的事情,事务将回滚,下一个查询将不会执行。我试图找到关于这个问题的一些证据,但我找不到任何证据,或者如果存在的话,我错过了一些证据。
希望有人能为我提供一个明确的答案或参考资料,并在高级感谢。
发布于 2019-06-11 19:11:41
如上所述,Promise.all()方法here等待所有承诺的解析,如果只有一个承诺被拒绝,它也将拒绝。所以问题是1.传递给promise.all()的所有方法都返回promise,还是它们都在使用回调函数? 2.这些方法中的哪一个首先运行很重要吗?因为promise.all() doesn't care in what order they resolve 3.有多少方法返回reject很重要吗?因为promise.all()会在第一次拒绝时拒绝。此外,如果您将此方法用于MySQL等,有时您的对象关系映射可能会以某种方式处理,但会被拒绝。因此,我个人同意你的朋友们的观点,因为这种方法很难控制,但也许可以找到它的用途:)
PS:希望其他贡献者能帮助我解决我遗漏的其他问题。
https://stackoverflow.com/questions/56540750
复制相似问题