捕获回调函数引发的错误

问题描述 投票:2回答:2

我已将异步函数与回调相结合,因为我需要异步函数来等待另一个异步函数。回调抛出了我需要捕获的错误。如何捕获异步函数调用的回调中抛出的错误? someFunction是异步的,下面代码中的try-catch块不起作用

let someAsyncFunction = async () => {
    return true
}

let someFunction =  async (callback)=> {
    await someAsyncFunction()
    callback()
}

try {
    someFunction(()=> {
        throw ("Some error")
        console.log("Callback has been called")
    });

} catch (error) {
    console.log(error)
}

这是实际的代码。抛出错误,第一个函数运行良好。我试图让第二个功能做同样的事情。

async facebook(req, res, next) {
    throw ({status:405, message:"Method not allowed"})
}


async login(req, res, next) {
        let __promisifiedPassportAuthentication = function () {
            return new Promise((resolve, reject) => {
                passport.authenticate('local', (err, user, info) => {
                    if(err)reject(err)
                    if(user === false || user === null)reject({message:"No such user"})
                })(req, res, next) 
            })
        }

        __promisifiedPassportAuthentication().catch((err)=>{
            //How do I get this error to be thrown by the (parent) function login?
            // Promise.reject(err)
            throw(err)

        })
    }

和护照策略

passport.use( new LocalStrategy({ usernameField: 'email' }, async (email, password, done) => {
  let [err, dontcare, care] = [];
  let person = {Email: email}

  ;[err, care] = await to (Familyfe.Person.which(person))
  //force err to have some value 
  err = true
  if(err)return done(err);

}));
javascript callback async-await
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.