gpt4 book ai didi

javascript - promise 一次性解决

转载 作者:行者123 更新时间:2023-11-30 23:58:23 27 4
gpt4 key购买 nike

我的代码中的 Promise 仅在第一次执行时解析,它是带有 reCAPTCHA 验证的简单表单提交。通过调试,我知道浏览器解释器到达了 await captchaVerification() 行并在那里停止。第一次执行没有任何错误。

contactForm.addEventListener('submit', async (e) => {
e.preventDefault();
await captchaVerification()
const data = new FormData(contactForm)
_alert.innerHTML = 'Sending message...'
_alert.setAttribute('class', `alert show`);
ajax(contactForm.method, contactForm.action, data)
.then(([r, t]) => outcome(r ? r = 'success' : r = 'error', t))
.catch(e => outcome('error', e))
});

关于 hastebin 的完整上下文:https://hastebin.com/oyuvoyeluv.js

最佳答案

从您发布的链接中,我可以看到在您的 captchaVerification 函数中,您检查之前是否已呈现验证码,如果没有,则呈现并resolve拒绝 promise 。问题是,如果 isRendered 为 true,您永远不会resolvereject

function captchaVerification() {
return new Promise((resolve, reject) => {
captcha.style.display = 'block';

const verifyCallback = (response) => {
if (response) {
captcha.style.display = 'none'
grecaptcha.reset()
return resolve(response)
} else {
grecaptcha.reset()
return reject('Invalid captcha verification.')
}
}

// The problem is here as you do nothing if the captcha was
// previously rendered.
if (!isRendered) {
grecaptcha.render('g-recaptcha', {
'sitekey': 'my-secret-key',
'theme': 'dark',
'callback': verifyCallback
})
isRendered = true;
}
})
}

关于javascript - promise 一次性解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60906079/

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