Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

Wywołanie po zakończeniu innej funkcji

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

Wywołanie po zakończeniu innej funkcji

Post 20.10.2017, 22:13:18

Witam
Mam taki kod i jak to bywa w js nie wszystko działa tak jak w "zwykłych" jezykach
Kod: Zaznacz cały
(function($) {
//#tekst = start
$('#tekst').text('dupa');   
var funkcja1=function(){$('#test').animate({height:'50px'},2000);   
//tutj jakies inne animacje
//i tu też
};
var funkcja2=function(){$('#tekst').text('skonczone');   };      

funkcja1();   
funkcja2();   
})(jQuery)

Jak to "ustrojstwo" zrobić żeby działało jedno po drugim tj bez względu to jest w funkcji 1 funkcja2 została wywołana dopiero po zakończeniu pierwszej?
sasiadstar
Posty: 123
Dołączył(a): 26.08.2016

Re: Wywołanie po zakończeniu innej funkcji

Post 20.10.2017, 22:59:18

nie da się. Po to są callbacki, zdarzenia, promisy i inne "ustrojstwa", żeby wiedzieć kiedy zakończy się jedna asynchroniczna operacja i można wykonać kolejną operację.
Pojęcie "zwykłe języki" jest bardzo rozmyte. W wielu z nich znajdziesz elementy pozwalające na wykonanie asynchronicznych operacji, czy ogólnie operacji poza głównym wątkiem (choć nie każdy język domyślnie bazuje na event-loopie tak jak JS, jako formie synchronizacji).
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19639
Dołączył(a): 14.04.2002

Re: Wywołanie po zakończeniu innej funkcji

Post 21.10.2017, 11:23:41

No właśnie kombinowałem z tym wszystkim zeby jedno wiedziało co robi drugie ale bez zadnych efektow.
Jakoś przy $.ajax .done wszytko ładnie działa a tu nie wiem jak to poskładać do kupy.
sasiadstar
Posty: 123
Dołączył(a): 26.08.2016

Re: Wywołanie po zakończeniu innej funkcji

Post 21.10.2017, 11:54:03

Takie coś umiem zrobic i rozumiem ale nie wiem jak to zastosować do funkcji
Kod: Zaznacz cały
 $('#test').animate({ height: '400px'}, 2000).promise().done(function () { alert(1)})
sasiadstar
Posty: 123
Dołączył(a): 26.08.2016

Re: Wywołanie po zakończeniu innej funkcji

Post 21.10.2017, 12:39:35

Wreszcie mi się udało niestety metodą prób i błędów ale działa.
Dla potomnych
Kod: Zaznacz cały
$(document).ready(function(){
 var promise=animacja();

promise.done(function() {tekst('Wreszcie');});
})

function animacja()
{var defer = new $.Deferred();
$('#test').animate({ height: '400px'}, 2000,function(){defer.resolve()});
   return defer.promise();   
}
function tekst(tekst)
{$('#tekst').text(tekst);}
sasiadstar
Posty: 123
Dołączył(a): 26.08.2016


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50667 zarejestrowanych użytkowników.
Najnowszy użytkownik: RozellaF


Nasi użytkownicy napisali:

  • 936047 wiadomości
  • w 246706 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)