Вы можете использовать Обещание здесь.
Вам нужно подождать, пока токен не будет сгенерирован.
Вы также можете использовать asyn c / await вместо Обещания.
ngOnInit() {
this.validateCaptcha().then(token => { // Here wait token generated
if(token) {
}
})
}
validateCaptcha() {
return new Promise((res, rej) => {
grecaptcha.ready() => {
grecaptcha.execute('reCAPTCHA_site_key', {action:
'homepage'}).then((token) => {
return res(token);
})
})
})
}
Обновить пример с помощью asyn c / await.
При использовании asyn c / await ваш метод validateCaptcha останется таким же (должен вернуть Promise)
async ngOnInit() { // async keyword added here
try {
let token = await this.validateCaptcha(); // await keyword added here
if(token) {
}
} catch(e) {
}
}