Я пытаюсь использовать пользовательскую проверку RazorPay.
Ожидаемое поведение
netBankingKeys заполнен массивом банков
извлечено изменено с ложного на истинное
Что происходит
первая функция setTimeout выводит неопределенное значение
вторая функция setTimeout сообщает, что значение равно flase
третьи функции setTimeout работают как положено
Я пытался увеличить значение тайм-аута с 4 до 20 секунд, но все же netBankingKeys остается неопределенным.
ngOnInit() {
this.razorpay.once('ready', function (response) {
//Converts the object to array sets the global variable with the value
this.netbankingKeys = Object.keys(response.methods['netbanking']).map((key) => [{ name: response.methods['netbanking'][key], key: key }]);
//sets local storage with the stringify value
localStorage.setItem("banks", JSON.stringify(this.netbankingKeys));
//flag to say data was fetched initially false
this.fetched = true
})
//prints undefined
setTimeout(() => { console.log(this.netbankingKeys) }, 4000)
//prints false
setTimeout(() => { console.log(this.fetched) }, 4000)
//works fine
setTimeout(() => { console.log(localStorage.getItem("banks")) }, 4000)
}