以下代码段会在调用reject(err)
时导致"未捕获异常警告" ,尽管该方法是在try / catch语句中调用的。
async verifyToken (token: string): Promise<string | object> {
return new Promise<string | object>( (resolve, reject) => {
jwt.verify(token, this._publicKey, (err, decoded) => {
if (err) {
reject(err);
} else {
resolve(decoded);
};
});
}
这违反了我对promisses和async / await模式的理解,因为到目前为止,如果在try / catch语句中调用该函数,我不希望出现非处理错误。
try {
const obj = await verifyToken(token);
} catch (err) {
...
}
目前我通过工作来解决这个问题。
async verifyToken (token: string): Promise<string | object> {
let cause: any;
const rv = await new Promise<string | object>( (resolve, reject) => {
jwt.verify(token, this._publicKey, (err, decoded) => {
if (err) {
cause = err;
resolve(undefined);
} else {
resolve(decoded);
};
})
});
if (rv) {
return rv;
} else if (cause instanceof Error) {
throw cause;
} else {
throw new Error('invalid token');
}
}
我的问题:
答案 0 :(得分:-1)
使用异步/等待:
//some async function
try {
let response = await getAllPosts();
} catch(e) {`enter code here`
console.log(e);
}
更多内容:"Uncaught (in promise) undefined" error when using with=location in Facebook Graph API query