最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

承诺和异步代码:如何在Promise.all中抛出500状态代码

网站源码admin22浏览0评论

承诺和异步代码:如何在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几乎可以肯定在所有承诺解决之前就开始运行。

发布评论

评论列表(0)

  1. 暂无评论