Przykładowy zestaw osiągnieć jest tablicą obiektów, poniżej podano jedno przykladowe osiągnięcie
let achievement = [{check:()=>{/*warunek do spelnienia osiągiecia*/;},
{reward:()=>{/*daje nagrode za osiagniecie */;},
{done:false;} // czy zostala wykonana
}];
funkcja sprawdzająca wygląda tak
for (i=0;i<achievement.lenght;i++){
if(achievement[i].done === false && achievement[i].check() ===true) {achievement[i].reward()}; /* reward nadaje funkcji także true dla .done */
}
Powyższa pętla jest wykonywana co jakiś czas, w zasadzie wygląda to dobrze, ale nie podoba mi się, ponieważ załóżmy że osiągnięć jest kilkaset, do tego ponad 95% już użytkownik wypełnił, wtedy co chwile i tak to kilkaset warunkow jest sprawdzane, jak to można zoptymalizować? Czy może jest jednak dobrze tak jak jest?