首页 > 解决方案 > 如何在 try/catch 中使用 map?

问题描述

我有一个样品,请看一下,如果我做对了,

export const create = async ({ invitationList, testId }) => {
  try {
    const promises = invitationList.map(async invitationTo => {
      return new Promise(async (resolve, reject) => {
        const invitation = await InterviewSchedule({
          invitationTo,
          testId
        }).save();
        resolve(invitation);
      });
    });
    Promise.all(promises).then(value => {
      console.log(value);
    });
  } catch (error) {
    throw error;
  }
};

我无法在 catch 块中捕获错误。

标签: javascriptnode.jspromiseasync-await

解决方案


错误的经典try/catch控制流仅在您做出await承诺时才有效。在您的代码中,您不是在等待Promise.all. 试试这个:

export const create = async({
  invitationList,
  testId
}) => {
  try {
    const promises = invitationList.map(invitationTo =>
        new InterviewSchedule({
          invitationTo,
          testId
        }).save());
    const results = await Promise.all(promises);
    console.log(results);
  } catch (error) {
    throw error;
  }
};

推荐阅读