Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]JS Obiect po inicjalizacji
Forum PHP.pl > Forum > Przedszkole
sasiadstar
Witam
Ponieważ dopiero uczę się obiektów w JS napotkałem problem.
[JAVASCRIPT] pobierz, plaintext
  1. var jb_Object2=function(JQuery) {
  2. var x="";
  3. init=0;
  4. ////////////////////////////////////////
  5. show_=function(){
  6. console.log(x);
  7. // jezeli init =1 (done) to wyświetl show_ albo jakoś tak
  8.  
  9. }
  10.  
  11.  
  12. loadData=function(){
  13. var deferred = $.Deferred();
  14.  
  15. setTimeout(function(){
  16.  
  17. x='OK';
  18. init=1;
  19. //Object.prototype.show=function(data){return show_()}; to takie moje zamysły
  20. deferred.resolve();
  21. }, 3000)
  22. return deferred.promise();
  23.  
  24. } ;//end Ajax
  25.  
  26. //////////init///////////
  27. initApp=function(){
  28.  
  29. var pomise_= loadData();
  30.  
  31. pomise_.done(function(data){
  32.  
  33. console.log('promise done');
  34. return true;
  35. })
  36.  
  37. }
  38. ////////////////////////////
  39. return{
  40. init:initApp,
  41. show:show_
  42. }
  43. ///////////////////////////
  44. }//end object
  45.  
  46. var smog=new jb_Object2();
  47.  
  48. smog.init();
  49. smmog.show()//Wielkie nic
[JAVASCRIPT] pobierz, plaintext

Czemu nic nie pokazuje to wiem ale nie wiem jak zrobić żeby metoda wywołala się dopiero po inicjalizacji obiektu.
Myślałem nad dodaniem metody w momencie kończenia funkcji init() ale wtedy show() wywali błąd.
rad11
Masz wielkie nic bo w tym obrębie nie masz dostępnej zmiennej x... zrób sobie console.log(1); to zobaczysz
sasiadstar
Cytat(rad11 @ 8.02.2018, 09:11:29 ) *
Masz wielkie nic bo w tym obrębie nie masz dostępnej zmiennej x... zrób sobie console.log(1); to zobaczysz

Mam dostępną ale przypisane do niej jest''
Jak uruchomię smog.init()
poczekam na console.log->promise done
wtedy do zmiennej x zostanie podstawione OK
i metoda show() wyświetli OK
Chodzi mi własnie o to żeby metoda show()czekała na zakończenie init i dopiero się wywołała

Cytat(rad11 @ 8.02.2018, 09:11:29 ) *
Masz wielkie nic bo w tym obrębie nie masz dostępnej zmiennej x... zrób sobie console.log(1); to zobaczysz


Wszystko działa jak powinno przy wywolaniu show_() zwraca "" bo tak jest zainicjowana zmienna.
Jak zrobie init() i poczekam na console.log ->promise done
to ponownym wywolaniu show_ otrzymam OK

I chodzi mi właśnie o to żeby ta funkcja"czekała" aż init zrobi swoje i dopiero wtedy się wywołała.
Pewnie potrzebne do tego promise ale kompletnie nie iem jak to zastosować
Toshikatsu
Może to błąd przy kopiowaniu, ale czy masz tam

smmog.show()//Wielkie nic
?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.