Nie, wyczyściłem, czy grasz w szachy?
Upadnij ponownie, ponieważ doszedłeś do wniosku, że jest to moduł szybkiego odświeżania.
Zanurzę się w koncepcji „nie nagrywaj”, a oto jak pracować z kodem synchronicznym.
W tym celu musimy przede wszystkim zrozumieć, czym jest kod asynchroniczny.
Powiedzmy, że ustawiłem timer z ustawionym limitem czasu, który jest funkcją wbudowaną w węzeł J.
S tam.
Definiujemy funkcję, która powinna zostać wykonana po upływie określonego czasu.
Tutaj użyję funkcji strzałki.
Możesz użyć nazwanej funkcji, cokolwiek chcesz.
Drugim argumentem jest licznik czasu.
Powiedzmy, że dwie sekundy.
Wyrażasz to w milisekundach.
Dwie sekundy to dwa tysiące milisekund.
Wszystko po prostu zamknięte.
Timer jest skończony.
Jeśli teraz uruchomię ten plik przez dwie sekundy, nic się nie stanie, a wtedy zobaczymy, że Taimur jest skończony.
Teraz jest to kod asynchroniczny, ponieważ nie kończy się natychmiast i byłby nawet kodem wysyłającym, gdybyśmy
mieli tam jedną milisekundę.
Więc jeśli jest super szybki, nie dzieje się to natychmiast w naszym kroku kodu.
To tak, jakbyśmy mieli blokadę konsoli.
Witaj.
I dziennik konsoli.
Cześć, te dwa fragmenty są kodem Synchronoss, ponieważ są one wykonywane zaraz po sobie, a jednak technicznie rzecz
biorąc, Noad zajmie trochę czasu, aby je wykonać.
Ale nie ma opóźnienia innego niż twój sprzęt.
Można powiedzieć, że dlatego kod Synchronoss.
Jest to zły kod, asynchroniczny, ponieważ nie wykonuje się go ani nie kończy natychmiast.
To zajmuje trochę czasu, nawet jeśli jest tak super krótkie.
I rzeczywiście, jeśli wykonam ten plik w ten sposób, zobaczysz heo i wysoko, zanim zobaczysz, że Taimur jest skończony,
nawet jeśli jest super szybki, ponieważ nie ma G. S. a JavaScript ogólnie nie blokuje wykonywania kodu, dopóki nie
zostanie to zrobione.
Rzeczywiście, tutaj rozpozna tę tak zwaną funkcję oddzwaniania.
Więc funkcja powinna zostać wykonana.
W przyszłości powinien oddzwonić później, gdy to zrobi.
Tak więc, gdy ten licznik czasu wygaśnie tutaj, po prostu to rozpozna, a następnie natychmiast
przejdzie do następnego wiersza i wykona cały kod synchroniczny, a następnie wykona kod asynchroniczny.
Po wykonaniu tej czynności, najpierw widzimy, jak nisko i wysoko, mimo że w naszym kodzie czas skończony jest drukowany
jako pierwszy.
Jest to kluczowa koncepcja, którą musisz zrozumieć w JavaScript, a zwłaszcza w węźle.
Wrócę do tego przez cały kurs, ponieważ jest to bardzo ważne.
Teraz, kiedy pracujesz z długiem, a wszystko wzrasta do dwóch sekund, aby jeszcze bardziej wyjaśnić, zobaczysz
ponownie, że działa nasz kod synchronizacji.
A następnie po dwóch sekundach ten kod jest uruchamiany.
Pracując z kodem asynchronicznym, otrzymujemy wiele technik dobrego radzenia sobie z nim.
Funkcja oddzwaniania jest jedna, najstarsza i zobaczysz ją całkiem sporo, szczególnie uwaga G. S ..
Nie ma w tym nic złego, ale napotkasz problem, jeśli wykonasz kilka zależnych operacji asynchronicznych.
Więc tutaj ustawiliśmy zegar.
A teraz załóżmy, że tworzę inną funkcję.
Które nazywam Fetch Data.
Tam też po prostu ustawię licznik czasu, ponieważ nie chcę konfigurować bazy danych ani czegoś takiego, z którego
pobieramy dane, zrobimy to wszystko przez cały czas.
Oczywiście.
Bez obaw.
Więc tutaj znowu mam inny licznik, który zajmuje około półtorej sekundy.
A teraz tutaj, w Fetch Data, potrzebuję jakiegoś sposobu na zrobienie czegoś.
Kiedy skończył się zegar wewnętrzny?
Więc tutaj spodziewam się argumentu, którego nazwę oddzwonię, ponieważ ten argument będzie
funkcją.
W końcu wywołam tutaj swoją wewnętrzną funkcję, gdy skończę z timerem.
I tam mogę przejść.
Wykonano jako wartość, znając miejsce, w którym użycie pobiera dane.
Powiedzmy, że jest to część tego zestawu.
Czas.
Połączenie.
Nazywam tam pobieranie takich danych.
Teraz muszę przekazać i nigdy nie oddzwonić.
I tu.
Otrzymam tekst przekazany przez wywołanie zwrotne w mojej funkcji po uruchomieniu.
Dostaniemy więc trochę tekstu i mogę zablokować ten tekst w konsoli.
Teraz może się to wydawać mylące. Tworzę własną funkcję, która otrzymuje wywołanie zwrotne, dzięki
czemu mogę zdefiniować funkcję, która powinna zostać wykonana, aby ten wewnętrzny licznik czasu był wykonywany z innego miejsca.
Więc z tego miejsca tutaj jest funkcja, która jest skutecznie przekazywana jako wywołanie zwrotne.
I tutaj wykonuję tę funkcję.
Teraz, jeśli uratuję to bieg, że.
Zajmuje dwie sekundy, a następnie ten czas timera jest zakończony.
A potem po półtorej sekundy widzę, że jest skończony.
Teraz, jeśli mamy kilka zagnieżdżonych wywołań asynchronicznych, tak jak tutaj, wchodzimy coraz głębiej z perspektywy wywołania
zwrotnego.
I dlatego zawsze mamy funkcję o nazwie Obietnice, z której możemy skorzystać.
Bez szans.
Teraz często będziemy używać pakietów stron trzecich, które już korzystają z obietnic dla nas.
Więc teraz pokażę ci składnię, którą rzadko musisz pisać na własną rękę.
Zrobią to pakiety za kulisami.
Wciąż miło wiedzieć, że tworzysz obietnicę.
Wewnątrz naszej funkcji pobierania danych, powiedzmy, jesteś.
Przechowując go w stałej lub zmiennej, a następnie używając nowego słowa kluczowego, którego używasz w JavaScript
do stworzenia nowego obiektu opartego na konstruktorze.
Jeśli funkcje konstruktora są czymś, co nic ci nie mówi.
Zapoznaj się z kilkoma podstawowymi zasobami wprowadzającymi do JavaScript, ponieważ funkcje konstruktora są podstawową funkcją
JavaScript.
I tutaj użył funkcji konstruktora obietnic, która jest wbudowana w JavaScript i nie ma G. S ..
I w rzeczywistości odbiera również oddzwanianie, które przechodzi do argumentów, rozstrzygania i odrzucania.
Możesz je nazwać, jak chcesz, ale są to dwie funkcje.
A pierwszy z powodzeniem spełnia obietnicę.
Rozwiązuje to z powodzeniem.
Drugi odrzuca to, co jest jak zgłaszanie błędu.
Następnie weź swój kod asynchroniczny i przenieś go tam.
I znowu, rzadko musisz pisać to na własną rękę.
Większość pakietów już to robi dla ciebie i daje ci skończoną obietnicę, która robi całą magię
za ukrytymi przed tobą scenami.
Tutaj robimy to ręcznie.
Więc teraz i tata oddzwoń.
Mamy własny zestaw funkcji.
Limit czasu nie daje nam obiecującego API, niestety.
Więc tutaj wszyscy musimy użyć połączenia zwrotnego.
Ale w ich.
Wiemy, że nie korzystamy już z żadnej otrzymanej funkcji zwrotnej.
Nie dostaję tu żadnych argumentów i nie pobrałem już danych.
Zamiast tego tutaj rozwiązuję.
Gotowe, powiedzmy.
Pomyślnie wróciłem więc do rozwiązania wartości w pobieraniu danych.
Po zdefiniowaniu obietnicy musimy ją tylko zwrócić.
I pamiętaj, że jest to kod synchroniczny.
W rzeczywistości zostanie to zwrócone natychmiast po utworzeniu obietnicy, aby zakodować ją w
przebiegu obietnic, co nastąpi później, kiedy faktycznie wywołamy tę funkcję.
A kiedy tym razem Odyn się zakończy.
Więc teraz zwracamy tę obietnicę tutaj.
A w miejscu, w którym nazywamy pobrane dane, nie przekazujemy już oddzwonienia.
Ale możemy teraz skorzystać z tego, co można wywiązać się z obietnicy i zwrócimy obietnicę.
To pozwala nam teraz po prostu zdefiniować tutaj funkcję zwaną funkcją, która będzie wykonywana po
spełnieniu obietnicy.
Jaka jest z tego zaleta?
Gdybyśmy mieli wiele takich obietnic.
Powiedzmy jeszcze raz, zimne pobieranie danych i tam nie muszę tego używać w ten sposób.
I dlatego skończyłbym z zagnieżdżeniem.
Ponownie oddzwanianie.
Ale zamiast tego, wewnątrz obietnicy, a następnie blok jest częścią obietnicy.
Mogę po prostu zwrócić nową obietnicę, a następnie dodać następny, a następnie blok po poprzedniej.
Lubię to.
Więc teraz mamy łańcuch, a potem bloki.
Ta zostaje wywołana przy pierwszej obietnicy, a następnie w bloku, który otrzymałem, zwracam kolejną obietnicę.
I nawet jeśli nie dałoby nam to obiecującej zachęty.
Następnie blok zwrotny przekształciłby go w obietnicę, która natychmiast się rozwiązuje.
A następnie dodajemy kolejny blok, który teraz odnosi się do tej obietnicy tutaj.
Jest to bardziej czytelne niż posiadanie nieskończenie zagnieżdżonych wywołań zwrotnych.
Więc teraz, jeśli uruchomię, zobaczymy.
Witaj.
Cześć.
Timer jest skończony.
Skończyliśmy.
Widzimy, że zrobiono to ponownie, ponieważ dzwonię dwukrotnie do pobierania danych.
Więc może to być trudne po raz pierwszy.
Wykorzystamy to ponownie.
Utrudniony ten kurs i że stanie się jaśniejszy.
Ponownie, ten kod w większości nie jest tworzony przez ciebie, ale jest to kluczowa koncepcja, która ułatwia zarządzanie naszym
kodem asynchronicznym.
Zawsze istnieje inny sposób zarządzania tą asynchronią.
Poczekaj na dwa specjalne słowa kluczowe, których możesz użyć we współczesnym JavaScript, a pod koniec kursu będę miał osobną
sekcję na ten temat.
Chcę to tutaj przedstawić, ponieważ może być bardziej mylące niż ta składnia tutaj.
I chcę się tego trzymać.
Nie wprowadzaj tutaj zbyt wielu nowych funkcji jednocześnie.
Kod asynchroniczny jest jednak czymś, co musisz zrozumieć.
A jeśli do tej pory nie jest do końca jasne, to w porządku, chociaż zobaczysz to dla
zmienionego kursu, ponieważ mamy wiele asynchronicznych zdarzeń bez szans.
I wyjaśnię to wiele razy.
Jeszcze raz wyjaśnię obietnice.
Chcę tylko upewnić się, że już to widzieliście i że macie szansę zrozumieć, jak to działa
i jak sobie z tym poradzić.