javascript - 如何捕获 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 得到 Timeout 控制台错误(发现这是因为徽章元素由于组件渲染而被删除),但是为了避免它,我如何捕获它并解决返回空字符串?
解决方案
由于错误在承诺中,您是否尝试过.catch()
?
window.grecaptcha
.execute(recaptchaClientId, {
action: 'submit',
})
.then(function(token: string) {
resolve(token);
})
.catch(err => {
console.error(err);
resolve('');
});
推荐阅读
- android - 应用打开时通知不显示
- emacs - 当我按 C- 时,Emacs 没有反应。(点/句点)
- javascript - How to auto line break in bootstrap
- ios - 在扩展内访问项目中存在的图像
- asp.net-mvc - 如何在 asp.net core 2.1 MVC 中将 4 个 API 控制器组合到一个控制器中?
- postgresql - 将一些数据行从本地传输到登台服务器并进行版本控制,以便在可能的情况下之前的版本数据是 dafe
- docker - 如果 docker 重新启动,为什么我会丢失数据?
- python - 使用 pysftp 连接到 SFTP 服务器时出现“加载主机密钥失败”警告
- anylogic - 如何通过概率使 2D 或 3D 火灾出现在出口处
- sql - Sequelize Include with Where 条件