Я написал рекурсивную функцию с базовым регистром, но она не завершается из-за оператора if, который читает значения в наборе.timestamps.has()
всегда возвращает false
, даже когда он "должен быть", возвращая true
.
Я не могу отследить ошибку, и мне интересно, если я делаю что-то не так, что просто, например, область видимости переменной timestamps
, я уже проверил значения в наборе изначения, которые сравниваются, и они на самом деле эквивалентны, поэтому я не уверен, что не так.
var timestamps;
trackFraud = async () => {
account = document.getElementById("account").value;
timestamps = new Set();
await fraudClimb(account, 0);
async function fraudClimb(account, theseTimestamps) {
var [frauds, theseTimestamps] = await findFraudByFromAccount.call(this, account, theseTimestamps);
if (frauds.length == 0) return;
for (var i = 0; i < frauds.length; i++) {
await fraudClimb(frauds[i], theseTimestamps[i]);
}
}
}
findFraudByFromAccount = async (account, timestamp) => {
events = await window.KYCinstance.getPastEvents('ReportedFraudB', { filter: {fromAccount: web3.utils.fromAscii(account)}, fromBlock: 0 });
var frauds = [];
var theseTimestamps = [];
for (let i = 0; i < events.length; i++) {
let values = events[i].returnValues;
if (timestamps.has(values.times)) continue; //THIS LINE IS NEVER FAILING
else {
timestamps.add(values.time);
theseTimestamps.push(values.time);
frauds.push(web3.utils.toAscii(values.fromAccount));
}
}
return [frauds, theseTimestamps];
}