2010-02-05 13 views

Odpowiedz

8

od lewej do prawej. fun3() jest uruchamiany z wynikiem (= wartość zwracana) z fun2(), fun2() na tym z fun1().

Ten rodzaj łączenia można wykonać w JQuery, ponieważ każda funkcja łańcuchowa zwraca obiekt/element, do którego został wywołany.

Po wykonaniu $(selector).fun1() zwraca element $(selector). fun2() jest wywoływana z tego zwróconego elementu i tak dalej.

+0

Dziękuję przyjacielu! Byłem bardzo zdezorientowany wcześniej, ale teraz moje pomyłki zostały usunięte. Jeszcze raz dziękuję! –

+0

Dobra informacja, która bardzo mi pomogła. – Adamantus

0
  1. Wykorzystuje funkcję "oddzwaniania". Przekazujesz fun2 jako argument do fun1, fun1, a następnie wywołuje fun2, gdy jest skończona.
  2. To jest naprawdę sprytna funkcja jQuery, większość metod jQuery zwraca oryginalny obiekt, do którego została wywołana metoda, więc możesz wywołać inną metodę na zwróconym obiekcie. Kolejność jest taka sama jak sekwencja jest napisane w
+0

Dziękuję przyjacielu! Twoja odpowiedź jest dla mnie bardzo przydatna. –

5

W tym przykładzie.

$(selector).fun1(val,{fun2(){ }} 

Drugi parametr funkcjonować jeden jest callback function. Oznacza to, że wykonuje się fun1 wykonywanie.

W tym przykładzie:

$(selecter).fun1().fun2().fun3() 

Wszystkie funkcje są wystrzelone jak najszybciej, jeśli mają czas, jak mówią animację. W przeciwnym razie są one wykonywane w kolejności fun1, fun2, fun3.

Tak więc z animacjami, fun1, fun2 i fun3 będzie 3 jednoczesne nachodzące na siebie animacje, ale z innymi operacjami synchronicznymi, po prostu występują w kolejności.

+1

'Tak więc animacje, fun1, fun2 i fun3 byłyby 3 jednoczesnymi nakładającymi się animacjami" - Myślę, że nieco zawyżasz tę część. W przypadku animacji rzeczywiste funkcje nadal są uruchamiane w kolejności, ale same tworzą interwały z funkcjami wywołania zwrotnego. Ponieważ JS jest pojedynczym wątkiem, funkcje nie mogą działać asynchronicznie. Zegary oddzielają się od głównego wątku, ale ich funkcje wywołania zwrotnego są uruchamiane w głównym wątku, gdy staje się on bezczynny. –

+0

@Andy - To prawda, miałem na myśli * efekt * jest jednoczesny i nakładający się :) –

Powiązane problemy