【发布时间】:2019-07-21 17:06:57
【问题描述】:
我目前有一个 node.js/graphql 微服务,它使用 Promise.all 通过 apolloFetch 调用另一个微服务。我的 Promise.all 部分似乎工作正常,但我正试图让错误记录部分工作。我需要确保 Promise.all 执行所有的承诺并且在遇到第一个错误后不退出。一旦它执行了所有的承诺,我需要填充一个数组,这意味着错误,然后我循环并使用另一个函数插入到数据库中。我目前已经设置了数组和 catch,但是当我故意生成错误时,我没有看到数组被填充。
如果我的代码确实在做我打算做的事情,有人可以看看吗?
const ErrorsArray = [];
Promise.all(promises.map(p => apolloFetch({p}))).then((result) =>
{
resolve();
console.log("success!");
}).catch((e) => {
ErrorsArray.push( e );
});
if( ErrorsArray && ErrorsArray.length ){
for(a=0;a<ErrorsArray.length;a++){
funcLogErrors( ErrorsArray[a].errorCode,
ErrorsArray[a].message );
//Not sure if these are correct^^^^^^^^^
}
}
PS:另外,我如何在不关闭数据库的情况下模拟 mySQL 数据库错误,以便我可以测试这个函数以确保所有数据库错误都被捕获?
【问题讨论】:
标签: javascript node.js try-catch es6-promise