gpt4 book ai didi

node.js catch block 在等待时未按预期触发

转载 作者:搜寻专家 更新时间:2023-10-30 22:03:18 25 4
gpt4 key购买 nike

我的 Node 进程在登录后退出

E    callback: [Function: RP$callback],
E { serviceName: '....',
E errno: 'EAI_AGAIN',
E name: 'RequestError',

但我认为下面的代码会捕获异常并返回默认值

var rp = require('request-promise');

async function verifyJWT(jwt: string): Promise<any> {

const userDataPromise = rp({
uri: ...,
method: 'POST',
json: {
...
}
});
const userData = await userDataPromise.catch((err: any) => {
console.error(`verifyJWT: err`, err)
return {
authInfo: {}
};
});
return userData;
}

export default verifyJWT

是否有某些类型的故障不会在这里被捕获?在 catch on the promise 中提供拒绝处理程序会更好吗?

谢谢,布伦特

最佳答案

您将标准 promise 处理与 async/await 风格的 promise 处理混合在一起。您应该尝试使用其中之一,但不能同时使用两者。同时使用这两种方法不受限制,但肯定会增加困惑。

async/await 风格的 promise 处理应该是这样的:

async function verifyJWT(jwt: string): Promise<any> {
try {
return await rp({
uri: ...,
method: 'POST',
json: {
...
}
});
} catch (err) {
console.error(`verifyJWT: err`, err);
return {
authInfo: {}
};
}
}

标准的 promise 处理应该是这样的:

function verifyJWT(jwt: string): Promise<any> {
return rp({
uri: ...,
method: 'POST',
json: {
...
}
}).catch((err: any) => {
console.error(`verifyJWT: err`, err);
return {
authInfo: {}
};
});
}

关于node.js catch block 在等待时未按预期触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55496746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com