1 00:00:02,260 --> 00:00:04,100 Nie, wyczyściłem, czy grasz w szachy? 2 00:00:04,150 --> 00:00:08,590 Upadnij ponownie, ponieważ doszedłeś do wniosku, że jest to moduł szybkiego odświeżania. 3 00:00:09,010 --> 00:00:14,980 Zanurzę się w koncepcji „nie nagrywaj”, a oto jak pracować z kodem synchronicznym. 4 00:00:15,520 --> 00:00:20,110 W tym celu musimy przede wszystkim zrozumieć, czym jest kod asynchroniczny. 5 00:00:20,530 --> 00:00:25,340 Powiedzmy, że ustawiłem timer z ustawionym limitem czasu, który jest funkcją wbudowaną w węzeł J. 6 00:00:25,350 --> 00:00:26,850 S tam. 7 00:00:27,520 --> 00:00:31,380 Definiujemy funkcję, która powinna zostać wykonana po upływie określonego czasu. 8 00:00:31,870 --> 00:00:33,580 Tutaj użyję funkcji strzałki. 9 00:00:33,880 --> 00:00:36,100 Możesz użyć nazwanej funkcji, cokolwiek chcesz. 10 00:00:37,060 --> 00:00:38,620 Drugim argumentem jest licznik czasu. 11 00:00:38,650 --> 00:00:39,850 Powiedzmy, że dwie sekundy. 12 00:00:40,090 --> 00:00:41,710 Wyrażasz to w milisekundach. 13 00:00:41,830 --> 00:00:46,250 Dwie sekundy to dwa tysiące milisekund. 14 00:00:47,540 --> 00:00:48,190 Wszystko po prostu zamknięte. 15 00:00:48,260 --> 00:00:49,710 Timer jest skończony. 16 00:00:52,670 --> 00:00:58,490 Jeśli teraz uruchomię ten plik przez dwie sekundy, nic się nie stanie, a wtedy zobaczymy, że Taimur jest skończony. 17 00:00:59,360 --> 00:01:05,060 Teraz jest to kod asynchroniczny, ponieważ nie kończy się natychmiast i byłby nawet kodem wysyłającym, gdybyśmy 18 00:01:05,060 --> 00:01:06,680 mieli tam jedną milisekundę. 19 00:01:06,770 --> 00:01:12,520 Więc jeśli jest super szybki, nie dzieje się to natychmiast w naszym kroku kodu. 20 00:01:12,520 --> 00:01:15,350 To tak, jakbyśmy mieli blokadę konsoli. 21 00:01:16,590 --> 00:01:17,100 Witaj. 22 00:01:19,020 --> 00:01:20,460 I dziennik konsoli. 23 00:01:22,400 --> 00:01:28,790 Cześć, te dwa fragmenty są kodem Synchronoss, ponieważ są one wykonywane zaraz po sobie, a jednak technicznie rzecz 24 00:01:28,790 --> 00:01:32,120 biorąc, Noad zajmie trochę czasu, aby je wykonać. 25 00:01:32,300 --> 00:01:35,750 Ale nie ma opóźnienia innego niż twój sprzęt. 26 00:01:35,840 --> 00:01:39,020 Można powiedzieć, że dlatego kod Synchronoss. 27 00:01:39,260 --> 00:01:45,110 Jest to zły kod, asynchroniczny, ponieważ nie wykonuje się go ani nie kończy natychmiast. 28 00:01:45,260 --> 00:01:47,930 To zajmuje trochę czasu, nawet jeśli jest tak super krótkie. 29 00:01:49,000 --> 00:01:55,340 I rzeczywiście, jeśli wykonam ten plik w ten sposób, zobaczysz heo i wysoko, zanim zobaczysz, że Taimur jest skończony, 30 00:01:55,520 --> 00:02:04,580 nawet jeśli jest super szybki, ponieważ nie ma G. S. a JavaScript ogólnie nie blokuje wykonywania kodu, dopóki nie 31 00:02:04,580 --> 00:02:05,660 zostanie to zrobione. 32 00:02:06,260 --> 00:02:11,630 Rzeczywiście, tutaj rozpozna tę tak zwaną funkcję oddzwaniania. 33 00:02:11,990 --> 00:02:13,740 Więc funkcja powinna zostać wykonana. 34 00:02:13,760 --> 00:02:18,120 W przyszłości powinien oddzwonić później, gdy to zrobi. 35 00:02:18,140 --> 00:02:24,470 Tak więc, gdy ten licznik czasu wygaśnie tutaj, po prostu to rozpozna, a następnie natychmiast 36 00:02:24,470 --> 00:02:30,740 przejdzie do następnego wiersza i wykona cały kod synchroniczny, a następnie wykona kod asynchroniczny. 37 00:02:30,800 --> 00:02:36,890 Po wykonaniu tej czynności, najpierw widzimy, jak nisko i wysoko, mimo że w naszym kodzie czas skończony jest drukowany 38 00:02:36,890 --> 00:02:37,820 jako pierwszy. 39 00:02:38,270 --> 00:02:43,380 Jest to kluczowa koncepcja, którą musisz zrozumieć w JavaScript, a zwłaszcza w węźle. 40 00:02:43,700 --> 00:02:47,110 Wrócę do tego przez cały kurs, ponieważ jest to bardzo ważne. 41 00:02:48,520 --> 00:02:54,430 Teraz, kiedy pracujesz z długiem, a wszystko wzrasta do dwóch sekund, aby jeszcze bardziej wyjaśnić, zobaczysz 42 00:02:54,430 --> 00:02:56,740 ponownie, że działa nasz kod synchronizacji. 43 00:02:56,920 --> 00:02:58,990 A następnie po dwóch sekundach ten kod jest uruchamiany. 44 00:02:59,650 --> 00:03:05,380 Pracując z kodem asynchronicznym, otrzymujemy wiele technik dobrego radzenia sobie z nim. 45 00:03:06,280 --> 00:03:12,320 Funkcja oddzwaniania jest jedna, najstarsza i zobaczysz ją całkiem sporo, szczególnie uwaga G. S .. 46 00:03:12,680 --> 00:03:20,350 Nie ma w tym nic złego, ale napotkasz problem, jeśli wykonasz kilka zależnych operacji asynchronicznych. 47 00:03:20,980 --> 00:03:22,870 Więc tutaj ustawiliśmy zegar. 48 00:03:23,300 --> 00:03:27,280 A teraz załóżmy, że tworzę inną funkcję. 49 00:03:29,920 --> 00:03:32,270 Które nazywam Fetch Data. 50 00:03:34,390 --> 00:03:40,390 Tam też po prostu ustawię licznik czasu, ponieważ nie chcę konfigurować bazy danych ani czegoś takiego, z którego 51 00:03:40,510 --> 00:03:43,520 pobieramy dane, zrobimy to wszystko przez cały czas. 52 00:03:43,720 --> 00:03:44,110 Oczywiście. 53 00:03:44,120 --> 00:03:44,620 Bez obaw. 54 00:03:45,250 --> 00:03:51,310 Więc tutaj znowu mam inny licznik, który zajmuje około półtorej sekundy. 55 00:03:52,940 --> 00:03:59,610 A teraz tutaj, w Fetch Data, potrzebuję jakiegoś sposobu na zrobienie czegoś. 56 00:03:59,640 --> 00:04:01,250 Kiedy skończył się zegar wewnętrzny? 57 00:04:01,730 --> 00:04:07,190 Więc tutaj spodziewam się argumentu, którego nazwę oddzwonię, ponieważ ten argument będzie 58 00:04:07,190 --> 00:04:07,820 funkcją. 59 00:04:08,090 --> 00:04:12,740 W końcu wywołam tutaj swoją wewnętrzną funkcję, gdy skończę z timerem. 60 00:04:13,340 --> 00:04:14,360 I tam mogę przejść. 61 00:04:14,390 --> 00:04:18,320 Wykonano jako wartość, znając miejsce, w którym użycie pobiera dane. 62 00:04:18,380 --> 00:04:20,490 Powiedzmy, że jest to część tego zestawu. 63 00:04:20,510 --> 00:04:20,730 Czas. 64 00:04:20,930 --> 00:04:21,410 Połączenie. 65 00:04:22,540 --> 00:04:24,610 Nazywam tam pobieranie takich danych. 66 00:04:24,760 --> 00:04:27,140 Teraz muszę przekazać i nigdy nie oddzwonić. 67 00:04:27,940 --> 00:04:28,540 I tu. 68 00:04:29,690 --> 00:04:34,040 Otrzymam tekst przekazany przez wywołanie zwrotne w mojej funkcji po uruchomieniu. 69 00:04:34,550 --> 00:04:38,930 Dostaniemy więc trochę tekstu i mogę zablokować ten tekst w konsoli. 70 00:04:39,970 --> 00:04:44,890 Teraz może się to wydawać mylące. Tworzę własną funkcję, która otrzymuje wywołanie zwrotne, dzięki 71 00:04:45,160 --> 00:04:50,950 czemu mogę zdefiniować funkcję, która powinna zostać wykonana, aby ten wewnętrzny licznik czasu był wykonywany z innego miejsca. 72 00:04:51,010 --> 00:04:55,450 Więc z tego miejsca tutaj jest funkcja, która jest skutecznie przekazywana jako wywołanie zwrotne. 73 00:04:55,830 --> 00:04:57,490 I tutaj wykonuję tę funkcję. 74 00:04:58,330 --> 00:05:00,460 Teraz, jeśli uratuję to bieg, że. 75 00:05:01,790 --> 00:05:04,680 Zajmuje dwie sekundy, a następnie ten czas timera jest zakończony. 76 00:05:04,730 --> 00:05:06,770 A potem po półtorej sekundy widzę, że jest skończony. 77 00:05:07,460 --> 00:05:15,170 Teraz, jeśli mamy kilka zagnieżdżonych wywołań asynchronicznych, tak jak tutaj, wchodzimy coraz głębiej z perspektywy wywołania 78 00:05:15,170 --> 00:05:15,980 zwrotnego. 79 00:05:16,790 --> 00:05:21,990 I dlatego zawsze mamy funkcję o nazwie Obietnice, z której możemy skorzystać. 80 00:05:22,010 --> 00:05:22,760 Bez szans. 81 00:05:23,570 --> 00:05:27,710 Teraz często będziemy używać pakietów stron trzecich, które już korzystają z obietnic dla nas. 82 00:05:28,400 --> 00:05:32,810 Więc teraz pokażę ci składnię, którą rzadko musisz pisać na własną rękę. 83 00:05:33,260 --> 00:05:35,840 Zrobią to pakiety za kulisami. 84 00:05:36,350 --> 00:05:39,680 Wciąż miło wiedzieć, że tworzysz obietnicę. 85 00:05:40,900 --> 00:05:43,450 Wewnątrz naszej funkcji pobierania danych, powiedzmy, jesteś. 86 00:05:44,800 --> 00:05:50,050 Przechowując go w stałej lub zmiennej, a następnie używając nowego słowa kluczowego, którego używasz w JavaScript 87 00:05:50,050 --> 00:05:52,660 do stworzenia nowego obiektu opartego na konstruktorze. 88 00:05:53,110 --> 00:05:56,860 Jeśli funkcje konstruktora są czymś, co nic ci nie mówi. 89 00:05:57,190 --> 00:06:04,030 Zapoznaj się z kilkoma podstawowymi zasobami wprowadzającymi do JavaScript, ponieważ funkcje konstruktora są podstawową funkcją 90 00:06:04,150 --> 00:06:04,930 JavaScript. 91 00:06:05,680 --> 00:06:11,650 I tutaj użył funkcji konstruktora obietnic, która jest wbudowana w JavaScript i nie ma G. S .. 92 00:06:12,970 --> 00:06:18,660 I w rzeczywistości odbiera również oddzwanianie, które przechodzi do argumentów, rozstrzygania i odrzucania. 93 00:06:18,850 --> 00:06:21,640 Możesz je nazwać, jak chcesz, ale są to dwie funkcje. 94 00:06:22,180 --> 00:06:25,360 A pierwszy z powodzeniem spełnia obietnicę. 95 00:06:25,450 --> 00:06:27,250 Rozwiązuje to z powodzeniem. 96 00:06:27,640 --> 00:06:31,170 Drugi odrzuca to, co jest jak zgłaszanie błędu. 97 00:06:32,140 --> 00:06:34,870 Następnie weź swój kod asynchroniczny i przenieś go tam. 98 00:06:35,170 --> 00:06:37,840 I znowu, rzadko musisz pisać to na własną rękę. 99 00:06:38,110 --> 00:06:43,420 Większość pakietów już to robi dla ciebie i daje ci skończoną obietnicę, która robi całą magię 100 00:06:43,420 --> 00:06:45,160 za ukrytymi przed tobą scenami. 101 00:06:45,610 --> 00:06:46,690 Tutaj robimy to ręcznie. 102 00:06:47,200 --> 00:06:48,510 Więc teraz i tata oddzwoń. 103 00:06:48,520 --> 00:06:51,690 Mamy własny zestaw funkcji. 104 00:06:51,710 --> 00:06:55,020 Limit czasu nie daje nam obiecującego API, niestety. 105 00:06:55,030 --> 00:06:56,830 Więc tutaj wszyscy musimy użyć połączenia zwrotnego. 106 00:06:57,430 --> 00:06:58,300 Ale w ich. 107 00:07:00,240 --> 00:07:04,860 Wiemy, że nie korzystamy już z żadnej otrzymanej funkcji zwrotnej. 108 00:07:04,950 --> 00:07:07,190 Nie dostaję tu żadnych argumentów i nie pobrałem już danych. 109 00:07:07,770 --> 00:07:09,900 Zamiast tego tutaj rozwiązuję. 110 00:07:10,230 --> 00:07:11,160 Gotowe, powiedzmy. 111 00:07:11,520 --> 00:07:16,670 Pomyślnie wróciłem więc do rozwiązania wartości w pobieraniu danych. 112 00:07:17,100 --> 00:07:20,520 Po zdefiniowaniu obietnicy musimy ją tylko zwrócić. 113 00:07:21,060 --> 00:07:23,910 I pamiętaj, że jest to kod synchroniczny. 114 00:07:24,240 --> 00:07:30,480 W rzeczywistości zostanie to zwrócone natychmiast po utworzeniu obietnicy, aby zakodować ją w 115 00:07:30,480 --> 00:07:35,640 przebiegu obietnic, co nastąpi później, kiedy faktycznie wywołamy tę funkcję. 116 00:07:35,820 --> 00:07:37,590 A kiedy tym razem Odyn się zakończy. 117 00:07:38,250 --> 00:07:40,110 Więc teraz zwracamy tę obietnicę tutaj. 118 00:07:40,590 --> 00:07:45,450 A w miejscu, w którym nazywamy pobrane dane, nie przekazujemy już oddzwonienia. 119 00:07:45,810 --> 00:07:51,900 Ale możemy teraz skorzystać z tego, co można wywiązać się z obietnicy i zwrócimy obietnicę. 120 00:07:53,490 --> 00:07:59,880 To pozwala nam teraz po prostu zdefiniować tutaj funkcję zwaną funkcją, która będzie wykonywana po 121 00:07:59,910 --> 00:08:00,780 spełnieniu obietnicy. 122 00:08:04,040 --> 00:08:05,610 Jaka jest z tego zaleta? 123 00:08:06,420 --> 00:08:08,430 Gdybyśmy mieli wiele takich obietnic. 124 00:08:09,970 --> 00:08:16,540 Powiedzmy jeszcze raz, zimne pobieranie danych i tam nie muszę tego używać w ten sposób. 125 00:08:17,750 --> 00:08:20,640 I dlatego skończyłbym z zagnieżdżeniem. 126 00:08:22,110 --> 00:08:23,210 Ponownie oddzwanianie. 127 00:08:24,280 --> 00:08:30,820 Ale zamiast tego, wewnątrz obietnicy, a następnie blok jest częścią obietnicy. 128 00:08:31,180 --> 00:08:39,220 Mogę po prostu zwrócić nową obietnicę, a następnie dodać następny, a następnie blok po poprzedniej. 129 00:08:41,020 --> 00:08:41,650 Lubię to. 130 00:08:42,310 --> 00:08:44,740 Więc teraz mamy łańcuch, a potem bloki. 131 00:08:45,160 --> 00:08:50,290 Ta zostaje wywołana przy pierwszej obietnicy, a następnie w bloku, który otrzymałem, zwracam kolejną obietnicę. 132 00:08:50,680 --> 00:08:54,120 I nawet jeśli nie dałoby nam to obiecującej zachęty. 133 00:08:54,280 --> 00:08:58,780 Następnie blok zwrotny przekształciłby go w obietnicę, która natychmiast się rozwiązuje. 134 00:08:59,350 --> 00:09:03,700 A następnie dodajemy kolejny blok, który teraz odnosi się do tej obietnicy tutaj. 135 00:09:04,410 --> 00:09:08,680 Jest to bardziej czytelne niż posiadanie nieskończenie zagnieżdżonych wywołań zwrotnych. 136 00:09:09,460 --> 00:09:11,020 Więc teraz, jeśli uruchomię, zobaczymy. 137 00:09:11,050 --> 00:09:11,350 Witaj. 138 00:09:11,350 --> 00:09:11,770 Cześć. 139 00:09:12,160 --> 00:09:13,150 Timer jest skończony. 140 00:09:13,690 --> 00:09:14,410 Skończyliśmy. 141 00:09:14,680 --> 00:09:17,500 Widzimy, że zrobiono to ponownie, ponieważ dzwonię dwukrotnie do pobierania danych. 142 00:09:18,490 --> 00:09:22,330 Więc może to być trudne po raz pierwszy. 143 00:09:22,690 --> 00:09:23,590 Wykorzystamy to ponownie. 144 00:09:23,590 --> 00:09:26,050 Utrudniony ten kurs i że stanie się jaśniejszy. 145 00:09:26,380 --> 00:09:35,140 Ponownie, ten kod w większości nie jest tworzony przez ciebie, ale jest to kluczowa koncepcja, która ułatwia zarządzanie naszym 146 00:09:35,350 --> 00:09:36,640 kodem asynchronicznym. 147 00:09:37,420 --> 00:09:40,420 Zawsze istnieje inny sposób zarządzania tą asynchronią. 148 00:09:40,460 --> 00:09:46,330 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ą 149 00:09:46,330 --> 00:09:47,830 sekcję na ten temat. 150 00:09:48,130 --> 00:09:53,590 Chcę to tutaj przedstawić, ponieważ może być bardziej mylące niż ta składnia tutaj. 151 00:09:53,860 --> 00:09:55,300 I chcę się tego trzymać. 152 00:09:55,320 --> 00:09:58,750 Nie wprowadzaj tutaj zbyt wielu nowych funkcji jednocześnie. 153 00:09:59,680 --> 00:10:02,290 Kod asynchroniczny jest jednak czymś, co musisz zrozumieć. 154 00:10:02,530 --> 00:10:08,230 A jeśli do tej pory nie jest do końca jasne, to w porządku, chociaż zobaczysz to dla 155 00:10:08,290 --> 00:10:11,510 zmienionego kursu, ponieważ mamy wiele asynchronicznych zdarzeń bez szans. 156 00:10:12,130 --> 00:10:14,710 I wyjaśnię to wiele razy. 157 00:10:14,950 --> 00:10:17,080 Jeszcze raz wyjaśnię obietnice. 158 00:10:17,380 --> 00:10:23,380 Chcę tylko upewnić się, że już to widzieliście i że macie szansę zrozumieć, jak to działa 159 00:10:23,380 --> 00:10:25,870 i jak sobie z tym poradzić.