﻿1
00:00:01,150 --> 00:00:02,580
‫Instruktur: Selamat datang kembali.

2
00:00:02,580 --> 00:00:05,000
‫Sekarang mari kita pelajari semua tentang loop acara,

3
00:00:05,000 --> 00:00:08,150
‫yang merupakan inti dari Node.js. arsitektur js.

4
00:00:08,150 --> 00:00:10,580
‫Dan ini mungkin adalah ceramah

5
00:00:10,580 --> 00:00:13,500
‫terpenting di bagian ini, jadi pastikan Anda benar-benar

6
00:00:13,500 --> 00:00:16,510
‫memahami semua yang saya tunjukkan selama video ini.

7
00:00:16,510 --> 00:00:17,813
‫Jadi, mari kita mulai.

8
00:00:18,800 --> 00:00:21,880
‫Jadi, berikut adalah diagram yang mirip dengan kuliah terakhir

9
00:00:21,880 --> 00:00:25,170
‫sehingga kita tahu persis apa yang kita bicarakan di sini.

10
00:00:25,170 --> 00:00:28,240
‫Jadi, kita masih dalam proses Node di utas

11
00:00:28,240 --> 00:00:30,810
‫tunggal tempat loop acara berjalan, oke?

12
00:00:30,810 --> 00:00:32,530
‫Sekarang, hal pertama yang perlu

13
00:00:32,530 --> 00:00:34,750
‫Anda ketahui adalah bahwa loop acara adalah

14
00:00:34,750 --> 00:00:36,350
‫tempat semua kode

15
00:00:36,350 --> 00:00:39,550
‫aplikasi yang ada di dalam fungsi panggilan balik dijalankan.

16
00:00:39,550 --> 00:00:43,640
‫Jadi, pada dasarnya, semua kode yang bukan kode tingkat atas akan

17
00:00:43,640 --> 00:00:45,250
‫berjalan di loop acara.

18
00:00:45,250 --> 00:00:48,450
‫Beberapa bagian mungkin diturunkan ke kumpulan utas seperti

19
00:00:48,450 --> 00:00:50,140
‫yang kita lihat di

20
00:00:50,140 --> 00:00:53,430
‫kuliah terakhir, tetapi loop acara yang menangani semua ini.

21
00:00:53,430 --> 00:00:56,370
‫Seperti yang saya katakan sebelumnya, itu benar-benar

22
00:00:56,370 --> 00:00:58,360
‫jantung dari arsitektur Node.

23
00:00:58,360 --> 00:01:01,660
‫Oke, sekarang, seperti yang saya sebutkan berkali-kali di bagian

24
00:01:01,660 --> 00:01:04,300
‫pertama kursus, Node.js. js semuanya dibangun

25
00:01:04,300 --> 00:01:05,860
‫di sekitar fungsi panggilan balik.

26
00:01:05,860 --> 00:01:08,160
‫Jadi, fungsi yang dipanggil segera

27
00:01:08,160 --> 00:01:11,700
‫setelah beberapa pekerjaan selesai beberapa waktu di masa depan.

28
00:01:11,700 --> 00:01:12,960
‫Ingat itu?

29
00:01:12,960 --> 00:01:15,310
‫Dan ini bekerja dengan cara ini

30
00:01:15,310 --> 00:01:17,750
‫karena Node menggunakan arsitektur yang dipicu oleh

31
00:01:17,750 --> 00:01:20,480
‫peristiwa, yang akan kita bicarakan di salah

32
00:01:20,480 --> 00:01:22,100
‫satu video berikutnya.

33
00:01:22,100 --> 00:01:24,180
‫Tetapi yang perlu Anda ketahui

34
00:01:24,180 --> 00:01:26,020
‫untuk saat ini adalah bahwa

35
00:01:26,020 --> 00:01:31,020
‫hal-hal seperti aplikasi kami menerima permintaan HTTP di server kami atau penghitung waktu kedaluwarsa

36
00:01:31,130 --> 00:01:34,860
‫atau file yang selesai untuk dibaca, semua ini akan memancarkan

37
00:01:34,860 --> 00:01:37,350
‫peristiwa segera setelah selesai dengan pekerjaan mereka,

38
00:01:37,350 --> 00:01:40,150
‫dan acara kami loop kemudian akan mengambil acara

39
00:01:40,150 --> 00:01:41,880
‫ini dan memanggil

40
00:01:41,880 --> 00:01:44,750
‫fungsi panggilan balik yang terkait dengan setiap acara.

41
00:01:44,750 --> 00:01:46,520
‫Oke, masuk akal?

42
00:01:46,520 --> 00:01:49,680
‫Jadi, sekali lagi, loop peristiwa menerima peristiwa setiap kali

43
00:01:49,680 --> 00:01:51,800
‫sesuatu yang penting terjadi, dan kemudian

44
00:01:51,800 --> 00:01:54,440
‫akan memanggil panggilan balik yang diperlukan seperti yang

45
00:01:54,440 --> 00:01:56,443
‫kita definisikan dalam kode kita.

46
00:01:57,300 --> 00:01:59,690
‫Jadi, secara ringkas, biasanya dikatakan

47
00:01:59,690 --> 00:02:02,600
‫bahwa loop peristiwa melakukan orkestrasi, yang

48
00:02:02,600 --> 00:02:05,310
‫berarti bahwa ia menerima peristiwa, memanggil

49
00:02:05,310 --> 00:02:07,330
‫fungsi panggilan baliknya,

50
00:02:07,330 --> 00:02:11,290
‫dan memindahkan tugas yang lebih mahal ke kumpulan utas.

51
00:02:11,290 --> 00:02:14,670
‫Sekarang, bagaimana semua ini benar-benar bekerja di belakang layar?

52
00:02:14,670 --> 00:02:17,960
‫Dalam urutan apa panggilan balik ini dieksekusi?

53
00:02:17,960 --> 00:02:20,543
‫Nah, itulah yang akan kita cari tahu selanjutnya.

54
00:02:21,460 --> 00:02:24,630
‫Jadi, ingat, ketika kita memulai aplikasi Node

55
00:02:24,630 --> 00:02:27,430
‫kita, loop acara mulai berjalan segera.

56
00:02:27,430 --> 00:02:29,720
‫Sekarang, loop peristiwa memiliki beberapa fase,

57
00:02:29,720 --> 00:02:32,330
‫dan setiap fase memiliki antrian panggilan balik,

58
00:02:32,330 --> 00:02:35,060
‫yang merupakan panggilan balik yang berasal dari peristiwa

59
00:02:35,060 --> 00:02:36,690
‫yang diterima oleh

60
00:02:36,690 --> 00:02:39,830
‫loop peristiwa, seperti yang kita bicarakan di slide terakhir.

61
00:02:39,830 --> 00:02:41,830
‫Sekarang, di beberapa tempat Anda

62
00:02:41,830 --> 00:02:45,520
‫akan membaca bahwa hanya ada satu antrian panggilan balik atau satu antrian

63
00:02:45,520 --> 00:02:49,290
‫peristiwa, tetapi sebenarnya, seperti yang saya katakan, loop peristiwa memiliki banyak fase

64
00:02:49,290 --> 00:02:52,290
‫di mana setiap fase memiliki antrian panggilan baliknya sendiri.

65
00:02:52,290 --> 00:02:56,090
‫Jadi, sekarang mari kita lihat empat fase yang paling penting.

66
00:02:56,090 --> 00:02:58,090
‫Ada satu atau dua fase lain

67
00:02:58,090 --> 00:02:59,890
‫yang digunakan secara internal oleh

68
00:02:59,890 --> 00:03:01,360
‫Node, tetapi ini tidak

69
00:03:01,360 --> 00:03:03,530
‫terlalu penting dan saya tidak akan membicarakannya.

70
00:03:03,530 --> 00:03:05,230
‫Jadi, fase

71
00:03:05,230 --> 00:03:07,860
‫pertama menangani callback dari timer

72
00:03:07,860 --> 00:03:10,880
‫yang kedaluwarsa, misalnya, dari fungsi setTimeout().

73
00:03:10,880 --> 00:03:13,210
‫Jadi, jika ada fungsi callback dari timer

74
00:03:13,210 --> 00:03:15,750
‫yang baru saja kedaluwarsa, ini adalah yang

75
00:03:15,750 --> 00:03:18,010
‫pertama diproses oleh loop acara.

76
00:03:18,010 --> 00:03:21,040
‫Jika penghitung waktu kedaluwarsa nanti selama salah

77
00:03:21,040 --> 00:03:23,370
‫satu fase lain sedang diproses,

78
00:03:23,370 --> 00:03:26,860
‫maka panggilan balik pengatur waktu itu hanya akan dipanggil

79
00:03:26,860 --> 00:03:30,450
‫segera setelah loop acara kembali ke fase pertama ini.

80
00:03:30,450 --> 00:03:31,580
‫Masuk akal?

81
00:03:31,580 --> 00:03:34,520
‫Dan itu bekerja seperti ini di keempat fase.

82
00:03:34,520 --> 00:03:37,250
‫Jadi, panggilan balik di setiap antrian

83
00:03:37,250 --> 00:03:40,810
‫diproses satu per satu sampai tidak ada yang tersisa di

84
00:03:40,810 --> 00:03:44,630
‫antrian, dan baru setelah itu, loop acara akan memasuki fase berikutnya.

85
00:03:44,630 --> 00:03:49,180
‫Selanjutnya, kita memiliki polling I/O dan eksekusi callback I/O.

86
00:03:49,180 --> 00:03:52,840
‫Dan sekali lagi, ingat bahwa I/O adalah singkatan dari input/output.

87
00:03:52,840 --> 00:03:56,040
‫Jadi, polling pada dasarnya berarti mencari event I/O

88
00:03:56,040 --> 00:03:58,060
‫baru yang siap untuk

89
00:03:58,060 --> 00:04:00,890
‫diproses dan memasukkannya ke dalam antrian callback.

90
00:04:00,890 --> 00:04:04,110
‫Dan ingat bahwa dalam konteks aplikasi Node,

91
00:04:04,110 --> 00:04:08,710
‫I/O berarti terutama hal-hal seperti jaringan dan akses file, jadi, ini

92
00:04:08,710 --> 00:04:12,150
‫adalah fase di mana mungkin 99% dari kode

93
00:04:12,150 --> 00:04:14,270
‫kita akan dieksekusi,

94
00:04:14,270 --> 00:04:16,640
‫hanya karena dalam aplikasi Node

95
00:04:16,640 --> 00:04:20,500
‫biasa, sebagian besar yang perlu kita lakukan adalah terkait

96
00:04:20,500 --> 00:04:23,170
‫dengan jaringan dan juga, pengaksesan file.

97
00:04:23,170 --> 00:04:26,490
‫Fase berikutnya adalah untuk callback setImmediate, dan setImmediate

98
00:04:26,490 --> 00:04:29,250
‫adalah jenis timer khusus yang dapat

99
00:04:29,250 --> 00:04:32,810
‫kita gunakan jika kita ingin memproses callback segera setelah

100
00:04:32,810 --> 00:04:36,130
‫fase polling dan eksekusi I/O, yang mungkin penting

101
00:04:36,130 --> 00:04:39,173
‫dalam beberapa kasus penggunaan yang lebih lanjut.

102
00:04:40,110 --> 00:04:40,943
‫Baiklah.

103
00:04:40,943 --> 00:04:44,940
‫Dan akhirnya, fase keempat adalah untuk panggilan balik yang dekat, yang,

104
00:04:44,940 --> 00:04:47,530
‫sekali lagi, tidak begitu penting bagi kami,

105
00:04:47,530 --> 00:04:50,820
‫tetapi saya tetap menempatkan ini di sini demi kelengkapan.

106
00:04:50,820 --> 00:04:54,450
‫Pada dasarnya, pada fase ini, semua close

107
00:04:54,450 --> 00:04:58,920
‫event diproses, misalnya saat server web atau WebSocket dimatikan.

108
00:04:58,920 --> 00:05:01,920
‫Jadi, ini adalah empat fase dalam loop

109
00:05:01,920 --> 00:05:05,400
‫acara, tetapi selain empat antrian panggilan balik yang baru

110
00:05:05,400 --> 00:05:08,330
‫saja kita lihat, sebenarnya ada juga

111
00:05:08,330 --> 00:05:11,600
‫dua antrian lainnya, antrian nextTick() dan antrian microtasks

112
00:05:11,600 --> 00:05:14,780
‫lainnya, yang terutama untuk janji yang diselesaikan.

113
00:05:14,780 --> 00:05:16,890
‫Jika Anda tidak terbiasa dengan

114
00:05:16,890 --> 00:05:20,240
‫janji, kami akan membicarakannya sedikit di bagian selanjutnya.

115
00:05:20,240 --> 00:05:22,620
‫Bagaimanapun, jika ada panggilan balik di

116
00:05:22,620 --> 00:05:24,750
‫salah satu dari dua antrian

117
00:05:24,750 --> 00:05:27,840
‫ini untuk diproses, mereka akan dieksekusi tepat setelah

118
00:05:27,840 --> 00:05:30,250
‫fase saat ini dari loop peristiwa selesai

119
00:05:30,250 --> 00:05:32,380
‫alih-alih menunggu seluruh loop selesai.

120
00:05:32,380 --> 00:05:33,370
‫Oke?

121
00:05:33,370 --> 00:05:36,680
‫Jadi, dengan kata lain, setelah masing-masing dari empat

122
00:05:36,680 --> 00:05:40,340
‫fase ini, jika ada panggilan balik di dua antrian

123
00:05:40,340 --> 00:05:42,880
‫khusus ini, mereka akan segera dieksekusi.

124
00:05:42,880 --> 00:05:46,030
‫Sekarang, misalnya, bayangkan bahwa janji menyelesaikan dan

125
00:05:46,030 --> 00:05:49,730
‫mengembalikan beberapa data dari panggilan API saat panggilan balik

126
00:05:49,730 --> 00:05:52,690
‫dari timer yang kedaluwarsa sedang berjalan.

127
00:05:52,690 --> 00:05:56,050
‫Jadi, dalam hal ini, panggilan balik janji akan dieksekusi

128
00:05:56,050 --> 00:05:59,230
‫tepat setelah panggilan dari penghitung waktu selesai.

129
00:05:59,230 --> 00:06:00,490
‫Oke?

130
00:06:00,490 --> 00:06:03,480
‫Dan logika yang sama juga berlaku untuk antrian nextTick(),

131
00:06:03,480 --> 00:06:05,290
‫yang belum kita bicarakan.

132
00:06:05,290 --> 00:06:09,060
‫Jadi, pada dasarnya, proses nextTick() adalah fungsi yang dapat

133
00:06:09,060 --> 00:06:11,610
‫kita gunakan saat kita benar-benar perlu

134
00:06:11,610 --> 00:06:13,740
‫menjalankan panggilan balik tertentu tepat

135
00:06:13,740 --> 00:06:16,290
‫setelah fase loop peristiwa saat ini.

136
00:06:16,290 --> 00:06:18,810
‫Ini sedikit mirip dengan setImmediate, dengan

137
00:06:18,810 --> 00:06:21,540
‫perbedaan bahwa setImmediate hanya berjalan setelah fase

138
00:06:21,540 --> 00:06:23,400
‫panggilan balik I/O.

139
00:06:23,400 --> 00:06:24,600
‫Namun, yang

140
00:06:24,600 --> 00:06:27,930
‫serupa adalah keduanya untuk kasus penggunaan yang benar-benar canggih,

141
00:06:27,930 --> 00:06:30,080
‫dan kita mungkin bahkan tidak akan

142
00:06:30,080 --> 00:06:31,580
‫membutuhkannya selama kursus ini.

143
00:06:31,580 --> 00:06:34,660
‫Tapi bagaimanapun, saya ingin memasukkan hal-hal yang lebih kompleks ini

144
00:06:34,660 --> 00:06:36,700
‫di sini juga sehingga Anda memiliki alat

145
00:06:36,700 --> 00:06:38,940
‫yang Anda butuhkan jika Anda benar-benar perlu

146
00:06:38,940 --> 00:06:42,980
‫menggali jauh ke dalam Node.js. js jika Anda mau.

147
00:06:42,980 --> 00:06:46,210
‫Baiklah, dan dengan itu, kami benar-benar menyelesaikan satu

148
00:06:46,210 --> 00:06:50,360
‫centang dari loop acara, dan satu centang pada dasarnya hanya satu siklus

149
00:06:50,360 --> 00:06:51,580
‫dalam loop ini.

150
00:06:51,580 --> 00:06:54,840
‫Jadi, sekarang saatnya untuk memutuskan apakah perulangan

151
00:06:54,840 --> 00:06:58,520
‫harus berlanjut ke centang berikutnya atau program harus keluar.

152
00:06:58,520 --> 00:07:00,720
‫Dan bagaimana Node melakukan itu?

153
00:07:00,720 --> 00:07:02,310
‫Yah, itu sangat sederhana.

154
00:07:02,310 --> 00:07:05,100
‫Node hanya memeriksa apakah ada timer

155
00:07:05,100 --> 00:07:08,440
‫atau tugas I/O yang masih berjalan di latar belakang,

156
00:07:08,440 --> 00:07:12,180
‫dan jika tidak ada, maka ia akan keluar dari aplikasi.

157
00:07:12,180 --> 00:07:15,430
‫Tetapi jika ada timer yang tertunda atau tugas I/O,

158
00:07:15,430 --> 00:07:17,870
‫maka itu akan terus menjalankan

159
00:07:17,870 --> 00:07:20,500
‫loop acara dan langsung menuju centang berikutnya.

160
00:07:20,500 --> 00:07:22,030
‫Jadi, misalnya, ketika kami

161
00:07:22,030 --> 00:07:24,740
‫mendengarkan permintaan HTTP masuk seperti yang kami lakukan

162
00:07:24,740 --> 00:07:27,770
‫di proyek pertanian Node kami di bagian sebelumnya, kami

163
00:07:27,770 --> 00:07:30,600
‫pada dasarnya menjalankan tugas I/O, dan itulah sebabnya

164
00:07:30,600 --> 00:07:32,320
‫loop acara, dan oleh karena

165
00:07:32,320 --> 00:07:34,640
‫itu, Node.js. js, terus

166
00:07:34,640 --> 00:07:38,600
‫berjalan dan terus dengarkan permintaan HTTP baru yang

167
00:07:38,600 --> 00:07:41,920
‫masuk alih-alih hanya keluar dari aplikasi.

168
00:07:41,920 --> 00:07:44,450
‫Juga, saat kita menulis atau membaca

169
00:07:44,450 --> 00:07:47,480
‫file di latar belakang, itu juga merupakan tugas

170
00:07:47,480 --> 00:07:50,210
‫I/O, jadi masuk akal jika aplikasi tidak

171
00:07:50,210 --> 00:07:53,260
‫keluar saat sedang bekerja dengan file itu, bukan?

172
00:07:53,260 --> 00:07:55,780
‫Oke, dan ini pada dasarnya apa yang harus Anda

173
00:07:55,780 --> 00:07:57,930
‫ketahui tentang Node.js. loop acara js.

174
00:07:57,930 --> 00:08:00,260
‫Jika Anda membutuhkan lebih banyak detail

175
00:08:00,260 --> 00:08:01,760
‫dari ini, Anda

176
00:08:01,760 --> 00:08:04,860
‫selalu dapat mencoba membaca dokumentasi Node resmi, yang

177
00:08:04,860 --> 00:08:07,060
‫seharusnya cukup mudah untuk Anda pahami

178
00:08:07,060 --> 00:08:10,570
‫saat ini karena Anda sudah memahami sebagian besar loop acara.

179
00:08:10,570 --> 00:08:12,830
‫Dan saya hanya ingin menekankan bahwa

180
00:08:12,830 --> 00:08:15,940
‫sangat, sangat penting bagi Anda untuk memahami loop acara

181
00:08:15,940 --> 00:08:18,280
‫dengan benar sehingga Anda dapat menulis kode

182
00:08:18,280 --> 00:08:21,390
‫kinerja Anda sendiri dan juga men-debug kode Anda sendiri

183
00:08:21,390 --> 00:08:24,173
‫ketika terjadi kesalahan dengan cara yang tidak terduga.

184
00:08:25,720 --> 00:08:27,770
‫Dan sekarang, sebagai penutup, mari kita tinjau beberapa

185
00:08:27,770 --> 00:08:29,810
‫hal yang telah kita bicarakan di sini.

186
00:08:29,810 --> 00:08:32,490
‫Jadi, singkatnya, hal terpenting yang saya ingin Anda

187
00:08:32,490 --> 00:08:34,620
‫pahami dari kuliah ini, dan mungkin

188
00:08:34,620 --> 00:08:36,740
‫dari keseluruhan kursus ini, adalah bahwa

189
00:08:36,740 --> 00:08:38,560
‫loop peristiwa adalah yang memungkinkan

190
00:08:38,560 --> 00:08:41,630
‫pemrograman asinkron di Node.js. js, menjadikannya

191
00:08:41,630 --> 00:08:45,190
‫fitur terpenting dalam desain dan pembuatan

192
00:08:45,190 --> 00:08:47,580
‫Node.js. js benar-benar

193
00:08:47,580 --> 00:08:49,050
‫berbeda dari platform lain.

194
00:08:49,050 --> 00:08:51,600
‫Itu menangani semua acara yang masuk

195
00:08:51,600 --> 00:08:55,120
‫dan melakukan orkestrasi dengan menurunkan tugas yang lebih berat

196
00:08:55,120 --> 00:08:58,840
‫ke kumpulan utas, dan melakukan pekerjaan paling sederhana itu sendiri.

197
00:08:58,840 --> 00:09:01,520
‫Juga, ingat bahwa kita membutuhkan loop

198
00:09:01,520 --> 00:09:05,260
‫acara karena di Node.js. js semuanya bekerja dalam satu

199
00:09:05,260 --> 00:09:07,260
‫utas, jadi, Anda dapat memiliki ribuan

200
00:09:07,260 --> 00:09:11,230
‫atau jutaan pengguna yang mengakses utas yang sama pada saat yang bersamaan.

201
00:09:11,230 --> 00:09:13,690
‫Ini membuat Node sangat ringan dan skalabel,

202
00:09:13,690 --> 00:09:16,290
‫tetapi pada saat yang sama, ia datang

203
00:09:16,290 --> 00:09:17,930
‫dengan bahaya memblokir

204
00:09:17,930 --> 00:09:20,140
‫utas tunggal kami, yang akan membuat

205
00:09:20,140 --> 00:09:25,140
‫seluruh aplikasi lambat atau bahkan berhenti untuk semua pengguna Anda yang mengakses aplikasi, bukan?

206
00:09:25,340 --> 00:09:28,110
‫Sekarang, dalam bahasa lain seperti PHP

207
00:09:28,110 --> 00:09:31,300
‫yang berjalan di server Apache, pada dasarnya, utas baru

208
00:09:31,300 --> 00:09:35,200
‫dibuat untuk setiap pengguna baru, yang jauh lebih intensif sumber daya.

209
00:09:35,200 --> 00:09:37,180
‫Tapi di sisi lain, tidak

210
00:09:37,180 --> 00:09:39,160
‫ada bahaya memblokir, kan?

211
00:09:39,160 --> 00:09:41,430
‫Jadi, keseluruhan model itu membuatnya sedikit lebih

212
00:09:41,430 --> 00:09:44,340
‫mudah untuk menggunakan PHP untuk pemula, tetapi tentu saja,

213
00:09:44,340 --> 00:09:46,540
‫ia datang dengan kekurangannya sendiri,

214
00:09:46,540 --> 00:09:48,890
‫yang tidak akan saya bahas saat ini.

215
00:09:48,890 --> 00:09:50,690
‫Bagaimanapun, izinkan saya kembali

216
00:09:50,690 --> 00:09:54,860
‫mengingatkan Anda bahwa itu adalah tanggung jawab Anda untuk tidak memblokir

217
00:09:54,860 --> 00:09:58,150
‫loop acara, jadi inilah beberapa panduan untuk itu.

218
00:09:58,150 --> 00:10:00,490
‫Pertama, jangan gunakan versi

219
00:10:00,490 --> 00:10:02,850
‫sinkronisasi fungsi di modul fs, crypto,

220
00:10:02,850 --> 00:10:06,450
‫atau zlib di fungsi panggilan balik Anda, oke?

221
00:10:06,450 --> 00:10:09,210
‫Jadi, dalam proyek pertama kami, kami benar-benar

222
00:10:09,210 --> 00:10:12,610
‫menggunakan versi sinkron, tetapi itu dalam kode tingkat atas, jadi

223
00:10:12,610 --> 00:10:15,000
‫di luar panggilan balik apa pun.

224
00:10:15,000 --> 00:10:18,520
‫Dan karena kode itu berjalan bahkan sebelum loop acara

225
00:10:18,520 --> 00:10:22,200
‫dimulai, yah, tidak masalah untuk menggunakan versi sinkron di sana.

226
00:10:22,200 --> 00:10:24,910
‫Juga, dan ini mungkin cukup jelas,

227
00:10:24,910 --> 00:10:28,140
‫jangan melakukan perhitungan yang sangat rumit di loop acara.

228
00:10:28,140 --> 00:10:29,730
‫Jadi, hal-hal seperti menghitung

229
00:10:29,730 --> 00:10:33,890
‫jutaan angka dalam loop di dalam loop, atau sesuatu seperti itu.

230
00:10:33,890 --> 00:10:37,550
‫Selanjutnya, berhati-hatilah dengan JSON pada objek yang sangat besar

231
00:10:37,550 --> 00:10:40,480
‫karena pada titik tertentu, mungkin perlu

232
00:10:40,480 --> 00:10:43,440
‫waktu lama untuk mengurai, atau merangkai, JSON.

233
00:10:43,440 --> 00:10:47,170
‫Dan terakhir, jangan gunakan semua ekspresi reguler yang terlalu rumit,

234
00:10:47,170 --> 00:10:49,840
‫misalnya, dengan beberapa quantifier bersarang atau referensi

235
00:10:49,840 --> 00:10:52,130
‫balik, karena sekali lagi, itu

236
00:10:52,130 --> 00:10:54,810
‫bisa memakan waktu lebih lama dari yang diharapkan.

237
00:10:54,810 --> 00:10:56,680
‫Ini, tentu saja, hanya beberapa pedoman

238
00:10:56,680 --> 00:10:59,700
‫tingkat tinggi, tetapi mereka akan membantu Anda memulai di jalan

239
00:10:59,700 --> 00:11:00,803
‫yang benar.

240
00:11:01,650 --> 00:11:03,490
‫Sekarang, ada beberapa solusi

241
00:11:03,490 --> 00:11:06,390
‫potensial untuk masalah pemblokiran ini, seperti menurunkan muatan

242
00:11:06,390 --> 00:11:09,750
‫secara manual ke kumpulan utas atau menggunakan proses turunan, dan

243
00:11:09,750 --> 00:11:12,070
‫kita mungkin membicarakannya di akhir kursus atau

244
00:11:12,070 --> 00:11:14,370
‫beberapa waktu di masa mendatang, tetapi

245
00:11:14,370 --> 00:11:17,460
‫untuk saat ini, penting bahwa Anda memahami dan mengikuti

246
00:11:17,460 --> 00:11:20,110
‫saran ini untuk benar-benar tidak memblokir loop acara.

247
00:11:20,110 --> 00:11:21,600
‫Baiklah.

248
00:11:21,600 --> 00:11:24,520
‫Selanjutnya, saya akan memberikan contoh kecil untuk menunjukkan

249
00:11:24,520 --> 00:11:25,990
‫beberapa hal yang

250
00:11:25,990 --> 00:11:27,640
‫kita bicarakan dalam latihan.

