我对javascript中的async await比较陌生,所以这个问题可能是我不知道的。
我有这个
async function foo(req, res, next) {
try {
await scan(req.params.stack);
res.send('ok');
} catch (err) {
res.status(500).send('fail');
}
}
async function scan(stack) {
try {
const libs = [1,2,3];
const promises = libs.map(async l => analyze(stack, l)
.catch((err) => { throw new Error(err); }));
return q.allSettled(promises)
.then((results) => {
const rejected = results.filter(r => r.state === 'rejected');
if (rejected.length === results.length) throw new Error('Failed');
return results;
})
.catch((err) => {
throw new Error(err);
});
} catch (err) {
throw new Error(err);
}
}
async function analyze(stack, libraries) {
try {
const config = await buildConfiguration(stack, libraries);
return await databaseInsertion(vulnsObject);
} catch (err) {
return Promise.reject('Error while trying to analyze libs');
}
}不知何故,我收到了这个疯狂的警告,我不知道我在哪里没有捕捉到错误。
当然,我让构建配置失败是为了测试错误,但我得到的错误不是正常的流程,而是:
(node:415) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 3): Error: Error while trying to analyze libs我使用async await很好吗?有没有什么我应该遵循的模式来链接异步等待?
最奇怪的是foo函数工作得很好,这意味着失败。(500).send(‘res.status’);工作,并且我得到了响应
当我使用原生promises时,这个错误没有出现。
我真的困在这里了
https://stackoverflow.com/questions/52373878
复制相似问题