Hej, pisze sobie klasy zgodnie z ES6 ponieważ nie chce wnikac w prototypy, skoro (z tego co wyczytalem) od ES7 beda "normalne" klasy w js z publicznymi/prywatnymi obiektami itd.
Napisalem sobie jakas tam klase, w ktorej wrzucilem sobie rozne metody. No i teraz z innego miejsca w kodzie (inny plik js) wywoluje 1 metode z tej klasy i owa metoda po odpaleniu ma wywolac kolejna metoda z tej samej klasy, zrobilem to mniej wiecej tak:
loadJson(adress)
{
blebleble{
if(!err){
let d= JSON.parse(body);
data = d;
this.jsonIsLoaded();
}
}
async jsonIsLoaded()
{
//do something
}
Metoda loadJson uruchamiana z inn ego pliku js wykonuje sie prawidlowo ale kiedy juz sie owy json zaladuje i ma sie wykonac metoda jsonIsLoaded wywala blad:
"Exception has occurred: TypeError
TypeError: this.jsonIsLoaded is not a function"
Szukalem i szukalem i znalazlem ze wlasnie w taki sposob sie wywoluje metody w klasie wiec skad ten blad?
async
/await
), nie wskazuj mu starego sposobu z tworzeniemconst self = this;
. W tym celu powstały funkcje strzałeczkowe.Maciej Cąderek.bind(this)
-> https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Global_Objects/Function/bind zamiast tworzyć nadmiarową zmienną.