我怎样才能抓住被拒绝的Promises?

Mar*_*ary 1 javascript promise

我的代码如下:

errorTest().then((result) => {

    try {
        console.log(result);
    }

    catch (err) {
        console.error("Error detected 1");
        console.error(err);
    }
}).catch((err) => {
    console.error("Error detected 2");
    console.error(err);
});

async function errorTest() {
    return new Promise((resolve, reject) => {
        reject("my error");
    })
}
Run Code Online (Sandbox Code Playgroud)

目前,它打印"检测到错误2".

我想使用try/catch捕获我的错误,以便代码打印"Error detected 1".

如何修改我的代码才能执行此操作?

Ami*_*ner 5

首先声明async函数,这意味着你声明一个返回Promise的函数.所以你不需要用新的Promise扭曲它

你可以这样做

async function errorTest() {
  throw new Error("my error")
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样尝试捕获它

(async () =>{
  try{
    await errorTest()
  }
  catch(err){
    console.log(err)
  }

})()
Run Code Online (Sandbox Code Playgroud)

然后完整的代码将如下所示

async function errorTest() {
  throw new Error("my error")
}

(async () =>{
  try{
    await errorTest()
  }
  catch(err){
    console.log(err)
  }

})()
Run Code Online (Sandbox Code Playgroud)