Node.js 除了错误消息之外,您还应该如何访问Promise.allsolited()对象数组中返回的堆栈跟踪?

Node.js 除了错误消息之外,您还应该如何访问Promise.allsolited()对象数组中返回的堆栈跟踪?,node.js,es6-promise,Node.js,Es6 Promise,Promise.allSettled()返回状态为已满足或已拒绝的对象数组以及原因,例如:“[{status:'rejected',reason:'Error:some Error message},…]” 如果您将console.log错误记录出来,您可以看到原因和堆栈跟踪。但是,当您将输出保存到日志文件时,只需查看原因,而不是完整的堆栈跟踪。如何保存堆栈跟踪?Reason会向您提供错误消息。对于完整堆栈跟踪,请使用如下所示的reason.stack。这里的示例是批处理大量承诺,以避免耗尽内存

Promise.allSettled()返回状态为已满足或已拒绝的对象数组以及原因,例如:“[{status:'rejected',reason:'Error:some Error message},…]”


如果您将console.log错误记录出来,您可以看到原因和堆栈跟踪。但是,当您将输出保存到日志文件时,只需查看原因,而不是完整的堆栈跟踪。如何保存堆栈跟踪?

Reason会向您提供错误消息。对于完整堆栈跟踪,请使用如下所示的reason.stack。这里的示例是批处理大量承诺,以避免耗尽内存,同时还保存了堆栈跟踪:

const fs = require('fs');

const batch = async myArr => {
    const res = [];

    for (let i = 0; i < myArr.length; i += 2) {
        const requests = myArr.slice(i, i + 2).map(num => {
            if (num % 2 === 0) {
                return Promise.resolve(num);
            }

            if (num % 2 === 1) {
                return Promise.reject(Error(`Rejected promise in for loop at num ${ num }`));
            }
        });

        // eslint-disable-next-line no-await-in-loop
        await Promise.allSettled(requests)
            .then(response => res.push(response));
    }

    return res.flat();
};

batch([1, 2, 3, 4, 5, 6])
    .then(res => {
        let failed = [];

        failed = res.filter(re => (re.status === 'rejected'));

        for (let i = 0; i < failed.length; i += 1) {
            fs.appendFileSync('reasons.txt', `${ failed[i].reason }\n`);
            fs.appendFileSync('stack-traces.txt', `${ failed[i].reason.stack }\n`);
        }
    });
const fs=require('fs');
常量批处理=异步myArr=>{
常数res=[];
对于(设i=0;i{
如果(数值%2==0){
返回承诺。解析(num);
}
如果(数量%2==1){
return Promise.reject(错误(`num${num}`处for循环中拒绝的承诺);
}
});
//eslint禁用循环中的下一行无等待
等待承诺。所有已解决(请求)
.然后(response=>res.push(response));
}
返回平面();
};
批次([1,2,3,4,5,6])
。然后(res=>{
let failed=[];
failed=res.filter(re=>(re.status=='rejected');
for(设i=0;i
据我所知,这个问题还没有出现在堆栈溢出上,我相信这会帮助某些人(比如我)节省一些时间来解决。如果有人想否决某个问题,我相信这是有原因的,但我也非常希望有一个简短的评论来解释,这样我就可以确保我以后遵循正确的指导方针了?如果你能花点时间解释一下反对票,我将不胜感激。谢谢