代码:如何在Promise.all中抛出500状态代码"/>
承诺和异步代码:如何在Promise.all中抛出500状态代码
由于后端应用程序中存在3天,所以我一直卡在这些错误中:
[ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
[当我尝试在下面的代码中引发500状态错误时。
Promise.all(promises)
.then((results) => {
let i = 0;
for (const feature of results) {
if (feature == true) albumFields.features.push(features[i]._id);
else {
res.status(500).send('Server Error'); //ERROR HERE
}
i++;
}
})
.catch((err) => {
console.log(err);
});
try {
let album = new Album(albumFields);
await album.save();
res.json(album);
} catch (err) {
console.error(err.message);
res.status(500).send('Server Error');
}
有人可以建议我这样做的正确方法吗?
它看起来像在“ Promise.all(...”)之后运行代码,然后在内部运行代码
编辑:用下面的代码解决了,谢谢]]
let featureIsFalse = false;
await Promise.all(promises)
.then((results) => {
let i = 0;
for (const feature of results) {
if (feature == false) {
console.log('err');
}
if (feature == true) albumFields.features.push(features[i]._id);
else {
featureIsFalse = true;
}
i++;
}
console.log('result', results);
console.log('albumFields', albumFields.features);
})
.catch((err) => {
console.log(err);
});
if (featureIsFalse) res.status(500).send('Server Error');
else {
try {
// Create
let album = new Album(albumFields);
await album.save();
res.json(album);
} catch (err) {
console.error(err.message);
res.status(500).send('Server Error');
}
}
}
我在后端应用程序中停留了3天,但仍然遇到这些错误:[ERR_HTTP_HEADERS_SENT]:当我尝试在代码内抛出500状态错误时,无法在将标头发送给客户端后设置标头...
回答如下:try ... catch
几乎可以肯定在所有承诺解决之前就开始运行。
更多推荐
承诺和异步代码:如何在Promise.all中抛出500状态代码
发布评论