如何捕获 Google recaptchaV3 Promise Timeout?
How to capture Google recaptchaV3 Promise Timeout?
import canUseDOM from '@utils/dist/env/canUseDOM';
declare global {
interface Window {
grecaptcha: any;
}
}
export default async function getRecaptchaTokenExplicit(params: { recaptchaClientId: number }) {
return new Promise(resolve => {
if (canUseDOM && window.grecaptcha) {
const { recaptchaClientId } = params;
window.grecaptcha.ready(() => {
window.grecaptcha
.execute(recaptchaClientId, {
action: 'submit',
})
.then(function(token: string) {
return resolve(token);
});
});
} else {
return resolve('');
}
});
}
调用上面的 await 函数,我曾经从 recaptcha 得到超时控制台错误(发现这是因为徽章元素由于组件渲染而被删除),但为了避免它,我如何捕获它并解决 return空字符串?
错误如下所示:
既然错误在promise中,你试过.catch()
吗?
window.grecaptcha
.execute(recaptchaClientId, {
action: 'submit',
})
.then(function(token: string) {
resolve(token);
})
.catch(err => {
console.error(err);
resolve('');
});
import canUseDOM from '@utils/dist/env/canUseDOM';
declare global {
interface Window {
grecaptcha: any;
}
}
export default async function getRecaptchaTokenExplicit(params: { recaptchaClientId: number }) {
return new Promise(resolve => {
if (canUseDOM && window.grecaptcha) {
const { recaptchaClientId } = params;
window.grecaptcha.ready(() => {
window.grecaptcha
.execute(recaptchaClientId, {
action: 'submit',
})
.then(function(token: string) {
return resolve(token);
});
});
} else {
return resolve('');
}
});
}
调用上面的 await 函数,我曾经从 recaptcha 得到超时控制台错误(发现这是因为徽章元素由于组件渲染而被删除),但为了避免它,我如何捕获它并解决 return空字符串?
错误如下所示:
既然错误在promise中,你试过.catch()
吗?
window.grecaptcha
.execute(recaptchaClientId, {
action: 'submit',
})
.then(function(token: string) {
resolve(token);
})
.catch(err => {
console.error(err);
resolve('');
});