Javascript NodeJS:未处理的承诺拒绝
我遇到了一个小问题,在调试了所有的应用程序后,我注意到这是导致问题的文件,并返回了一个未处理的PromiserRejection 在未经处理的PromiseRejection之后,出现:错误:ORA-12170:TNS:连接超时 我已经在寻找解决方案,有人说承诺没有正确地传达,但我看不出有任何问题。还有其他建议吗 欢迎任何帮助 谢谢 正在将conexion设置为在执行整个源文件以响应所需时调用.getConnection返回的承诺 conexion此时没有处理程序。仅在稍后调用导出的{index,create,update}对象的indexmethod时才添加处理程序 因此,需要的源文件和调用的索引之间的连接超时将产生未经处理的拒绝错误 显然添加了catch子句,例如Javascript NodeJS:未处理的承诺拒绝,javascript,node.js,oracle,promise,es6-promise,Javascript,Node.js,Oracle,Promise,Es6 Promise,我遇到了一个小问题,在调试了所有的应用程序后,我注意到这是导致问题的文件,并返回了一个未处理的PromiserRejection 在未经处理的PromiseRejection之后,出现:错误:ORA-12170:TNS:连接超时 我已经在寻找解决方案,有人说承诺没有正确地传达,但我看不出有任何问题。还有其他建议吗 欢迎任何帮助 谢谢 正在将conexion设置为在执行整个源文件以响应所需时调用.getConnection返回的承诺 conexion此时没有处理程序。仅在稍后调用导出的{index
conexion = oracledb.getConnection(connection).catch( onRejected)
应该修复此错误,但您希望在onRejected上进行多少恢复取决于您。
编辑:
要满足V8版本关于如何处理未捕获承诺拒绝的要求,一个不太明显的方法是提供一个虚拟处理程序来阻止它:
conexion = oracledb.getConnection(connection);
conexion.catch(()=>undefined); // a do nothing catch handler.
在这里,第二行向conexion承诺添加了一个处理程序,使其得到处理,从而防止其成为未捕获的承诺拒绝。catch返回的承诺是多余的,并且没有记录,但是如果调用了no-operation-catch处理程序,它将得到满足
现在,在调用索引之前,conexion中的承诺可以被拒绝,而不会生成异常。这是否是为特定应用程序编写promise topology代码的最佳方法是另一个问题-您可能希望更早地解决连接超时问题。很好,我现在不能尝试,因为我不在工作,但周一会检查它。非常感谢你@Traktor53Nice,谢谢,未经处理的PromiserRejection已经消失,现在我只有错误:ORA-12170:TNS:Connect timeout发生了哈哈哈。我会检查我是否能解决这个问题,如果不能,我会提出另一个问题。谢谢你,先生。
const connection = require('../models/'),
oracledb = require('oracledb'),
conexion = oracledb.getConnection(connection)
conexion = oracledb.getConnection(connection).catch( onRejected)
conexion = oracledb.getConnection(connection);
conexion.catch(()=>undefined); // a do nothing catch handler.