ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ. Π ΠΊΠΎΠ½ΡΠ°ΠΊΡ ΠΠΌΠ΅Π»Π½ΠΈΡΠΊΠΈ Π‘Π΅ΡΠ³Π΅ΠΉ. ΠΠ΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΎΡΠ΄Π°Π²Π½Π° Π±ΡΡ Π΄ΠΎΠΌΠ°ΠΊΠΈΠ½ Π½Π° ΠΏΠΎΡΠΎΠΊ Π·Π° ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΊΡΠ΄Π΅ΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ Π·Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡ Π² JavaScript. ΠΠ½Π΅Ρ Π±ΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° ΠΎΠ±ΠΎΠ±ΡΡ ΡΠΎΠ·ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π».
ΠΠΎ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π ΡΠ°ΠΊΠ°, Π½Π΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡΠ°: ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ° ΡΡΠ΅ΠΊ ΠΈ ΠΎΠΏΠ°ΡΠΊΠ°?
ΠΡΡΠΆΠΎΠ»Π° Π΅ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡ, ΡΠΈΠΈΡΠΎ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΡΠ΅ ΠΈΠ·Π²Π»ΠΈΡΠ°Ρ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° LIFO βΠΏΠΎΡΠ»Π΅Π΄Π΅Π½ Π²Π»ΡΠ·ΡΠ», ΠΏΡΡΠ²ΠΈ ΠΈΠ·Π»ΡΠ·ΡΠ»β.
Π·Π°Π²ΡΡΡΠ΅ΡΠ΅ Π΅ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡ, ΡΠΈΠΈΡΠΎ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° (βΠΏΡΡΠ²ΠΈ Π²Π»ΡΠ·ΡΠ», ΠΏΡΡΠ² ΠΈΠ·Π»ΡΠ·ΡΠ»β FIFO
ΠΠΎΠ±ΡΠ΅, Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ.
JavaScript Π΅ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Ρ Π΅Π΄Π½Π° Π½ΠΈΡΠΊΠ°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° Π½ΠΈΡΠΊΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π΅Π΄ΠΈΠ½ ΡΡΠ΅ΠΊ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΡΠ° Π½Π° ΠΎΠΏΠ°ΡΠΊΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ JavaScript ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π² Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ Π΄ΡΡΠ³ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ ΡΠ°ΠΊΠ°Ρ ΡΠ²ΠΎΡ ΡΠ΅Π΄ Π² ΡΡΠ΅ΠΊΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ Π±ΡΠ΄Π°Ρ ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΈ.
Π‘ΡΠ΅ΠΊ ΠΎΡ ΠΎΠ±Π°ΠΆΠ΄Π°Π½ΠΈΡ Π΅ ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΡΡΠΎ Ρ ΠΏΡΠΎΡΡΠΈ Π΄ΡΠΌΠΈ Π·Π°ΠΏΠΈΡΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΌΡΡΡΠΎΡΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°ΠΌΠ΅. ΠΠΊΠΎ ΡΠΊΠΎΡΠΈΠΌ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΠ·Π±ΡΡΠ²Π°ΠΌΠ΅ Π½Π΅ΠΉΠ½ΠΈΡ Π·Π°ΠΏΠΈΡ Π΄ΠΎ Π²ΡΡΡ Π° Π½Π° ΡΡΠ΅ΠΊΠ°. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΠ·Π²Π°ΠΆΠ΄Π°ΠΌΠ΅ Π½Π°ΠΉ-Π³ΠΎΡΠ½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΡΡΠ΅ΠΊΠ° ΠΈ Π·Π°Π²ΡΡΡΠ²Π°ΠΌΠ΅ ΡΠ°ΠΌ, ΠΎΡΠΊΡΠ΄Π΅ΡΠΎ ΡΠΌΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π»ΠΈ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ. Π’ΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ. Π ΡΠ΅Π³Π° Π΅Π΄ΠΈΠ½ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ Π²ΡΠΏΡΠΎΡ. ΠΠ°ΠΊ ΡΠΎΠ³Π°Π²Π° ΡΠ°Π±ΠΎΡΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡΠ° Π² JavasScript?
ΠΡΡΡΠ½ΠΎΡΡ, Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΡΠ΅ΠΊΠ°, Π±ΡΠ°ΡΠ·ΡΡΠΈΡΠ΅ ΠΈΠΌΠ°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΠΎΠΏΠ°ΡΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡ WebAPI. Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΎΡ ΡΠ°Π·ΠΈ ΠΎΠΏΠ°ΡΠΊΠ° ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΠΎ ΡΠ΅Π΄ ΡΠ°ΠΌΠΎ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΠ΅ΠΊΡΡ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈΠ·ΡΠΈΡΡΠ΅Π½. ΠΠ΄Π²Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΡ ΠΎΡ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π²ΡΡΡ Ρ ΡΡΠ΅ΠΊΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠΊΠΎ ΠΈΠΌΠ° ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π² ΡΡΠ΅ΠΊΠ° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ Π² ΡΡΠ΅ΠΊΠ°. Π’ΠΎΡΠ½ΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ΅Π· ΡΠ°ΠΉΠΌΠ°ΡΡ ΡΠ΅ΡΡΠΎ Π΅ Π½Π΅ΡΠΎΡΠ½ΠΎ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠΈΠ³Π½Π΅ ΠΎΡ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π΄ΠΎ ΡΡΠ΅ΠΊΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ Π΅ ΠΏΡΠ»Π½Π°.
ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ Π΄Π° Π³ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ°. ΠΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°.
console.log('Hi');
setTimeout(function cb1() {
console.log('cb1');
}, 5000);
console.log('Bye');
1) ΠΠ°ΡΠ΅Π³Π° Π½ΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π°. ΠΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ° Π΅ ΡΠΈΡΡΠ°, ΡΡΠ΅ΠΊΡΡ Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π΅ ΠΏΡΠ°Π·Π΅Π½.
2) Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° console.log('Hi') ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΊΡΠΌ ΡΡΠ΅ΠΊΠ° Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ°.
3) Π Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΎ
4) Π’ΠΎΠ³Π°Π²Π° console.log('Hi') ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° ΠΎΡ ΡΡΠ΅ΠΊΠ° Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ°.
5) Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° setTimeout(function cb1() {β¦ }). ΠΠΎΠ±Π°Π²Ρ ΡΠ΅ ΠΊΡΠΌ ΡΡΠ΅ΠΊΠ° Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ°.
6) ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° setTimeout(function cb1() {β¦ }) ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°. ΠΡΠ°ΡΠ·ΡΡΡΡ ΡΡΠ·Π΄Π°Π²Π° ΡΠ°ΠΉΠΌΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠ°ΡΡ ΠΎΡ ΡΠ΅Π± API. Π©Π΅ ΠΈΠ·Π²ΡΡΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π±ΡΠΎΠ΅Π½Π΅.
7) ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° setTimeout(function cb1() {β¦ }) Π΅ ΠΏΡΠΈΠΊΠ»ΡΡΠΈΠ»Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ ΠΈ Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ° ΠΎΡ ΡΡΠ΅ΠΊΠ° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅.
8) ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° console.log('Bye') ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΊΡΠΌ ΡΡΠ΅ΠΊΠ° Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ.
9) ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° console.log('Bye') ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°.
10) ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° console.log('Bye') ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° ΠΎΡ ΡΡΠ΅ΠΊΠ° Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ°.
11) Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ° ΠΈΠ·ΠΌΠΈΠ½Π°Π»ΠΈ ΠΏΠΎΠ½Π΅ 5000 ms, ΡΠ°ΠΉΠΌΠ΅ΡΡΡ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π° ΠΈ ΠΏΠΎΡΡΠ°Π²Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ cb1 Π² ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅.
12) Π¦ΠΈΠΊΡΠ»ΡΡ Π·Π° ΡΡΠ±ΠΈΡΠΈΡ Π²Π·Π΅ΠΌΠ° ΡΡΠ½ΠΊΡΠΈΡ cb1 ΠΎΡ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΠΈ Ρ ΠΈΠ·Π±ΡΡΠ²Π° Π² ΡΡΠ΅ΠΊΠ° Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ.
13) Π€ΡΠ½ΠΊΡΠΈΡΡΠ° cb1 ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΈ Π΄ΠΎΠ±Π°Π²Ρ console.log('cb1') ΠΊΡΠΌ ΡΡΠ΅ΠΊΠ° Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ°.
14) ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° console.log('cb1') ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°.
15) ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° console.log('cb1') ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° ΠΎΡ ΡΡΠ΅ΠΊΠ° Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ°.
16) Π€ΡΠ½ΠΊΡΠΈΡ cb1 Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ° ΠΎΡ ΡΡΠ΅ΠΊΠ° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅.
ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°:
Π, Π½ΠΈΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ ΠΌΠ΅ ΠΊΠ°ΠΊ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡΠ° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° Π² JavaScript. Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π½Π°ΠΊΡΠ°ΡΠΊΠΎ Π·Π° Π΅Π²ΠΎΠ»ΡΡΠΈΡΡΠ° Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡ ΠΊΠΎΠ΄.
ΠΠ²ΠΎΠ»ΡΡΠΈΡΡΠ° Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡ ΠΊΠΎΠ΄.
a(function (resultsFromA) {
b(resultsFromA, function (resultsFromB) {
c(resultsFromB, function (resultsFromC) {
d(resultsFromC, function (resultsFromD) {
e(resultsFromD, function (resultsFromE) {
f(resultsFromE, function (resultsFromF) {
console.log(resultsFromF);
})
})
})
})
})
});
ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΊΠ°ΠΊΡΠΎ Π³ΠΎ ΠΏΠΎΠ·Π½Π°Π²Π°ΠΌΠ΅ Π² JavaScript, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ°ΠΌΠΎ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅Π΄Π°Π²Π°Π½ΠΈ ΠΊΠ°ΡΠΎ Π²ΡΡΠΊΠ° Π΄ΡΡΠ³Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° Π΄ΡΡΠ³ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊΠ° ΡΠ΅ ΡΠΎΠ΄ΠΈΡ Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ. Π Π΅ Π³ΠΎΡΠΈΠ½ΠΎ, Π·Π°Π±Π°Π²Π½ΠΎ ΠΈ ΠΏΠ»Π°ΠΌΠ΅Π½Π½ΠΎ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ Π² ΡΡΠ³Π°, ΠΌΠ΅Π»Π°Π½Ρ ΠΎΠ»ΠΈΡ ΠΈ ΡΡΠ³Π°. ΠΠ°ΡΠΎ? ΠΠ°, ΠΏΡΠΎΡΡΠΎ Π΅:
- Π‘ Π½Π°ΡΠ°ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ΅ΠΊΡΡΡ Π±ΡΡΠ·ΠΎ ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΡΠ° Π² Π½Π΅ΡΡΠ½ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ - βΠ°Π΄ Π·Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅β.
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π½Π°ΡΠ°.
- ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΡΡΡΠ°ΡΠ΅ ΠΈΠ·ΡΠ°Π·ΠΈ Ρ return.
Π‘ ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° Promise ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° ΡΡΠ°Π½Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ°.
new Promise(function(resolve, reject) {
setTimeout(() => resolve(1), 2000);
}).then((result) => {
alert(result);
return result + 2;
}).then((result) => {
throw new Error('FAILED HERE');
alert(result);
return result + 2;
}).then((result) => {
alert(result);
return result + 2;
}).catch((e) => {
console.log('error: ', e);
});
- ΠΠΎΡΠ²ΠΈΡ Π° ΡΠ΅ ΠΎΠ±Π΅ΡΠ°Π²Π°ΡΠΈ Π²Π΅ΡΠΈΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΡ Π° ΡΠ΅ΡΠΈΠΌΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ΄Π°
- ΠΠΌΠ°ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΏΡΠΈΡ Π²Π°ΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ
- ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Ρ Π΄ΠΎΠ±Π°Π²Π΅Π½ Promise.all
- ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡ Ρ async/await
ΠΠΎ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅ΡΠΎ ΠΈΠΌΠ° ΡΠ²ΠΎΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅, Π±Π΅Π· ΡΠ°Π½ΡΠΈ Ρ ΡΠ°ΠΌΠ±ΡΡΠ°, Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΡΠΌΠ΅Π½Π΅Π½ΠΎ ΠΈ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ Π΅, ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Ρ Π΅Π΄Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ.
Π, ΡΡΠΊ ΠΏΠ»Π°Π²Π½ΠΎ Π½Π°Π±Π»ΠΈΠΆΠ°Π²Π°ΠΌΠ΅ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. ΠΠ·ΠΌΠΎΡΠ΅Π½? Π, Ρ ΡΠ±Π°Π²ΠΎΡΠΎ Π΅, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π΄Π° ΡΠ²Π°ΡΠΈΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΠΉΠΊΠΈ, Π΄Π° ΠΏΠΎΠΌΠΈΡΠ»ΠΈΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ΡΠ΅, Π·Π° Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅. Π ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°.
Π Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅β- ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½Π° ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°, ΡΠΎΠΊΡΡΠΈΡΠ°Π½Π° Π²ΡΡΡ Ρ ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΠΈ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅. ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΏΠΎΡΠΎΠΊ ΠΎΡ Π΄Π°Π½Π½ΠΈ.
// ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ
const input = ducument.querySelector('input');
const eventsArray = [];
// ΠΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ² eventsArray
input.addEventListener('keyup',
event => eventsArray.push(event)
);
ΠΠ΅ΠΊΠ° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ»Π΅ Π·Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅. Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΌΠ°ΡΠΈΠ² ΠΈ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΊΠ»Π°Π²ΠΈΡ Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΎΡΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ Π² Π½Π°ΡΠΈΡ ΠΌΠ°ΡΠΈΠ². Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π±ΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠ°, ΡΠ΅ Π½Π°ΡΠΈΡΡ ΠΌΠ°ΡΠΈΠ² Π΅ ΡΠΎΡΡΠΈΡΠ°Π½ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅, Ρ.Π΅. ΠΈΠ½Π΄Π΅ΠΊΡΡΡ Π½Π° ΠΏΠΎ-ΠΊΡΡΠ½ΠΈΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ Π΅ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π° ΠΏΠΎ-ΡΠ°Π½Π½ΠΈΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ. Π’Π°ΠΊΡΠ² ΠΌΠ°ΡΠΈΠ² Π΅ ΠΎΠΏΡΠΎΡΡΠ΅Π½ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΠΎΡΠΎΠΊ ΠΎΡ Π΄Π°Π½Π½ΠΈ, Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΏΠΎΡΠΎΠΊ. ΠΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ°ΡΠΈΠ² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΅ΡΠ΅ ΠΏΠΎΡΠΎΠΊ, ΡΠΎΠΉ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ Π΄Π° ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ° Π°Π±ΠΎΠ½Π°ΡΠΈΡΠ΅, ΡΠ΅ Π² Π½Π΅Π³ΠΎ ΡΠ° ΠΏΡΠΈΡΡΠΈΠ³Π½Π°Π»ΠΈ Π½ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ. Π’Π°ΠΊΠ° ΡΡΠΈΠ³Π°ΠΌΠ΅ Π΄ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π·Π° ΠΏΠΎΡΠΎΠΊ.
ΠΠΎΡΠΎΠΊ ΠΎΡ Π΄Π°Π½Π½ΠΈ
const { interval } = Rx;
const { take } = RxOperators;
interval(1000).pipe(
take(4)
)
FlowβΠ΅ ΠΌΠ°ΡΠΈΠ² ΠΎΡ Π΄Π°Π½Π½ΠΈ, ΡΠΎΡΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ. Π‘Π΅Π³Π° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΡΠ°Π²Π° Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄, Π² ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠ±ΠΈΡΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°ΡΡΠΈ Π½Π° ΠΊΠΎΠ΄Π° Π·Π° Π΅Π΄Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°ΠΌΠ΅ Π·Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΈ ΡΠΎΠΉ ΡΠ΅ Π½ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π°ΡΡΡΠΏΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° RxJs ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ²Π°.
RxJS Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ ΠΈ Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΡΠΈΠΏ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌ, Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠΈΠΏΠ° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ (ΠΠ°Π±Π»ΡΠ΄Π°ΡΠ΅Π»ΠΈ, ΠΏΠ»Π°Π½ΠΎΠ²ΠΈΡΠΈ, ΡΡΠ±Π΅ΠΊΡΠΈ) ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΡΡ ΡΡΠ±ΠΈΡΠΈΡ ΠΊΠ°ΡΠΎ Ρ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ (ΠΊΠ°ΡΡΠ°, ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅, Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅, Π²ΡΠ΅ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΡ JavaScript Array).
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π½Π° ΡΠ°Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°.
ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌ, Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π», ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»
Observable Π΅ ΠΏΡΡΠ²ΠΈΡΡ Π±Π°Π·ΠΎΠ² ΡΠΈΠΏ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅. Π’ΠΎΠ·ΠΈ ΠΊΠ»Π°Ρ ΡΡΠ΄ΡΡΠΆΠ° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° RxJs. Π’ΠΎΠΉ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ ΠΏΠΎΡΠΎΠΊ, Π·Π° ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°ΡΠ΅ ΡΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π° Π°Π±ΠΎΠ½ΠΈΡΠ°Π½Π΅.
Observable ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠΏΠΎΠΌΠ°Π³Π°ΡΠ΅Π»Π΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Ρ.Π½Π°Ρ ΠΠ°Π±Π»ΡΠ΄Π°ΡΠ΅Π». ΠΠ·Π²ΠΈΠΊΠ²Π° ΡΠ΅ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π·Π° Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π» ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π». ΠΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΌΠ°ΡΠΈΠ², ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΡΠ΅Π± ΡΠΎΠΊΠ΅Ρ, Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ ΡΡΠ±ΠΈΡΠΈΠ΅ ΠΈ Ρ.Π½. Π’Π°ΠΊΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ observable Π΅ ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρ Producer ΠΈ Observer.
Observable ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΡΠΈ Π²ΠΈΠ΄Π° ΡΡΠ±ΠΈΡΠΈΡ Π½Π° Observer:
- ΡΠ»Π΅Π΄Π²Π°Ρ - Π½ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ
- Π³ΡΠ΅ΡΠΊΠ° - Π³ΡΠ΅ΡΠΊΠ°, Π°ΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π΅ ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΏΠΎΡΠ°Π΄ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΡΠΎΠ²Π° ΡΡΠ±ΠΈΡΠΈΠ΅ ΡΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΊΡΠ°Ρ Π½Π° ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ°ΡΠ°.
- Π·Π°Π²ΡΡΡΠ΅Π½ - ΡΠΈΠ³Π½Π°Π» Π·Π° ΠΊΡΠ°Ρ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π½ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ
ΠΠ° Π²ΠΈΠ΄ΠΈΠΌ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ:
Π Π½Π°ΡΠ°Π»ΠΎΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΠΌ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ 1, 2, 3 ΠΈ ΡΠ»Π΅Π΄ 1 ΡΠ΅ΠΊ. ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ 4 ΠΈ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠ°ΡΠ° Π½ΠΈΡΠΊΠ°.
ΠΠΈΡΠ»ΠΈ Π½Π° Π³Π»Π°Ρ
Π ΡΠΎΠ³Π°Π²Π° ΡΠ°Π·Π±ΡΠ°Ρ , ΡΠ΅ Π΅ ΠΏΠΎ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° ΡΠ°Π·ΠΊΠ°Π·Π²Π°ΠΌ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΄Π° ΠΏΠΈΡΠ° Π·Π° ΡΠΎΠ²Π°. π
ΠΠ±ΠΎΠ½Π°ΠΌΠ΅Π½Ρ
ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°ΠΌΠ΅ Π·Π° ΠΏΠΎΡΠΎΠΊ, ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ² ΠΊΠ»Π°Ρ Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½Ρ, ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈ Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ ΠΎΡΠΏΠΈΡΠ΅ΠΌ Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΡΠΏΠΈΡΠ΅ΡΠ΅. ΠΠΎΠΆΠ΅ΠΌ ΡΡΡΠΎ Π΄Π° Π³ΡΡΠΏΠΈΡΠ°ΠΌΠ΅ Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅. Π, Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ°Π·Π³ΡΡΠΏΠΈΡΠ°ΠΌΠ΅ Π½ΠΈΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π°. ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½Ρ ΠΊΠ°ΡΠΎ Π²Ρ ΠΎΠ΄. ΠΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠ°, ΡΠ΅ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΎΡΠΏΠΈΡΠ²Π°ΠΌΠ΅, Π½ΠΈΠ΅ ΡΠ΅ ΠΎΡΠΏΠΈΡΠ²Π°ΠΌΠ΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Π΄ΡΡΠ΅ΡΠ½ΠΈ Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½ΡΠΈ, ΡΡΠΊΠ°Ρ ΡΠ΅ ΡΡΡΠΎ ΡΠ° ΠΈΠ·Π²ΠΈΠΊΠ°Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π° ΠΎΡΠΏΠΈΡΠ²Π°Π½Π΅. ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΉ.
ΠΠΈΠ΄ΠΎΠ²Π΅ ΠΏΠΎΡΠΎΡΠΈ
HOT
Π‘Π’Π£Π
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΡ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΈΠ·Π²ΡΠ½ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΠΎ
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΡ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π²ΡΡΡΠ΅ Π² Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΈΡ
ΠΠ°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΠΎ
ΠΠ°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½ΡΠ°.
ΠΡΠΆΠ΄Π°Π΅ΡΠ΅ ΡΠ΅ ΠΎΡ ΠΏΠΎΠ²Π΅ΡΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°, Π·Π° Π΄Π° ΡΠ΅ ΠΎΡΠΏΠΈΡΠ΅ΡΠ΅
ΠΠΈΡΠΊΠ°ΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π° ΡΠ°ΠΌΠ°
ΠΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΡΡΠ·ΠΊΠ° "Π΅Π΄ΠΈΠ½ ΠΊΡΠΌ ΠΌΠ½ΠΎΠ³ΠΎ".
ΠΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΡΡΠ·ΠΊΠ° Π΅Π΄Π½ΠΎ ΠΊΡΠΌ Π΅Π΄Π½ΠΎ
ΠΡΠΈΡΠΊΠΈ Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½ΡΠΈ ΠΈΠΌΠ°Ρ Π΅Π΄Π½Π°ΠΊΠ²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ
ΠΠ±ΠΎΠ½Π°ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ
ΠΠ°Π½Π½ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π³ΡΠ±Π΅Π½ΠΈ, Π°ΠΊΠΎ Π½ΡΠΌΠ° Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½Ρ
ΠΡΠ΅ΠΈΠ·Π΄Π°Π²Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° ΠΏΠΎΡΠΎΠΊΠ° Π·Π° Π½ΠΎΠ² Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½Ρ
ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ, Π±ΠΈΡ ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» Π³ΠΎΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ ΠΊΠ°ΡΠΎ ΡΠΈΠ»ΠΌ Π² ΠΊΠΈΠ½ΠΎ. Π ΠΊΠ°ΠΊΡΠ² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΈ Π΄ΠΎΡΡΠ», ΠΎΡ ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΈ Π·Π°ΠΏΠΎΡΠ½Π°Π» Π΄Π° Π³Π»Π΅Π΄Π°Ρ. ΠΠΈΡ ΡΡΠ°Π²Π½ΠΈΠ» ΡΡΡΠ΄Π΅Π½ ΠΏΠΎΡΠΎΠΊ Ρ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ Π² ΡΡΡ . ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°. ΠΡΠ΅ΠΊΠΈ ΠΎΠ±Π°ΠΆΠ΄Π°Ρ ΡΠ΅ ΡΠ»ΡΡΠ° Π·Π°ΠΏΠΈΡΠ° Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΈΡ ΡΠ΅ΠΊΡΠ΅ΡΠ°Ρ ΠΎΡ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π΄ΠΎ ΠΊΡΠ°Ρ, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΡΠ²ΠΎΡΠΈΡΠ΅ Ρ ΠΎΡΠΏΠΈΡΠ²Π°Π½Π΅.
ΠΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠ°, ΡΠ΅ ΠΈΠΌΠ° ΠΈ ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΡΠΎΠΏΠ»ΠΈ ΠΏΠΎΡΠΎΡΠΈ (ΡΡΠ΅ΡΠ°ΠΌ ΡΠ°ΠΊΠΎΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ΄ΠΊΠΎ ΠΈ ΡΠ°ΠΌΠΎ Π² ΡΡΠΆΠ΄ΠΈ ΠΎΠ±ΡΠ½ΠΎΡΡΠΈ) - ΡΠΎΠ²Π° Π΅ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ° ΠΎΡ ΡΡΡΠ΄Π΅Π½ ΠΏΠΎΡΠΎΠΊ Π² Π³ΠΎΡΠ΅Ρ. ΠΡΠ·Π½ΠΈΠΊΠ²Π° Π²ΡΠΏΡΠΎΡΡΡ - ΠΊΡΠ΄Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°)) Π©Π΅ Π΄Π°ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ°.
Π Π°Π±ΠΎΡΡ Ρ Angular. Π’ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° rxjs. ΠΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠ° Π΄Π°Π½Π½ΠΈ ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ°, ΠΎΡΠ°ΠΊΠ²Π°ΠΌ ΡΡΡΠ΄Π΅Π½ ΠΏΠΎΡΠΎΠΊ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΡΠΎΠ·ΠΈ ΠΏΠΎΡΠΎΠΊ Π² ΡΠ°Π±Π»ΠΎΠ½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° asyncPipe. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΡΠ°Π·ΠΈ ΡΡΡΠ±Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΡΠΈ, ΡΠΎΠ³Π°Π²Π°, Π²ΡΡΡΠ°ΠΉΠΊΠΈ ΡΠ΅ ΠΊΡΠΌ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΡΡΡΠ΄Π΅Π½ ΠΏΠΎΡΠΎΠΊ, Π²ΡΡΠΊΠ° ΡΡΡΠ±Π° ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΡΡΠ²ΡΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΌΠ΅ΠΊΠΎ ΠΊΠ°Π·Π°Π½ΠΎ ΡΡΡΠ°Π½Π½ΠΎ. Π Π°ΠΊΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΠΌ ΡΡΡΠ΄Π΅Π½ ΠΏΠΎΡΠΎΠΊ Π² ΡΠΎΠΏΡΠ», ΡΠΎΠ³Π°Π²Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ Π²Π΅Π΄Π½ΡΠΆ.
ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠΏΠ° ΠΏΠΎΡΠΎΡΠΈ Π΅ Π΄ΠΎΡΡΠ° ΡΡΡΠ΄Π½ΠΎ Π·Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΠΈ, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅
return this.http.get(`${environment.apiUrl}/${this.apiUrl}/trade_companies`)
.pipe(
tap(({ data }: TradeCompanyList) => this.companies$$.next(cloneDeep(data))),
map(({ data }: TradeCompanyList) => data)
);
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ Π½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΡΠΎΡΠΈ. Π’Π΅ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Ρ ΡΡΠ±ΠΈΡΠΈΡΡΠ°, ΠΏΡΠΎΡΠΈΡΠ°ΡΠΈ Π² ΠΠ°Π±Π»ΡΠ΄Π°Π²Π°Π½ΠΎΡΠΎ. Π©Π΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΠ΅, Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅ Π² ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ-Π½Π°
ΠΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π½Π°. Π’ΠΎΠΉ ΡΡΠ·Π΄Π°Π²Π° Observable Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠΎΡΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ-ΡΠΈΠ»ΡΡΡ
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅, ΠΊΠ°ΠΊΡΠΎ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π²Π° ΠΈΠΌΠ΅ΡΠΎ, ΡΠΈΠ»ΡΡΠΈΡΠ° ΡΠΈΠ³Π½Π°Π»Π° Π½Π° ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ Π²ΡΡΠ½Π΅ ΠΈΡΡΠΈΠ½Π°, ΡΠΎΠΉ ΠΏΡΠ΅ΡΠΊΠ°ΡΠ° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ - Π²Π·Π΅ΠΌΠ΅ΡΠ΅
take - ΠΠ·Π΅ΠΌΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π±ΡΠΎΡ ΠΈΠ·Π»ΡΡΠ²Π°Π½ΠΈΡ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΡΠΎΠΊΡΡ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ-debounceTime
debounceTime - ΠΎΡΡ Π²ΡΡΠ»Ρ ΠΈΠ·Π»ΡΡΠ΅Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ - ΡΠ»Π΅Π΄ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΎΡ Π²ΡΠ΅ΠΌΠ΅, ΠΈΠ·Π»ΡΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ.
const { Observable } = Rx;
const { debounceTime, take } = RxOperators;
Observable.create((observer) => {
let i = 1;
observer.next(i++);
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 1000ΠΌΡ
setInterval(() => {
observer.next(i++)
}, 1000);
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 1500ΠΌΡ
setInterval(() => {
observer.next(i++)
}, 1500);
}).pipe(
debounceTime(700), // ΠΠΆΠΈΠ΄Π°Π΅ΠΌ 700ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ
take(3)
);
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ-takeWhile
ΠΠ·Π΄Π°Π²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ takeWhile Π²ΡΡΠ½Π΅ false, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΎΡΠΏΠΈΡΠ²Π° ΠΎΡ Π½ΠΈΡΠΊΠ°ΡΠ°.
const { Observable } = Rx;
const { debounceTime, takeWhile } = RxOperators;
Observable.create((observer) => {
let i = 1;
observer.next(i++);
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 1000ΠΌΡ
setInterval(() => {
observer.next(i++)
}, 1000);
}).pipe(
takeWhile( producer => producer < 5 )
);
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ-combineLatest
ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ combineLatest Π΅ Π΄ΠΎΠ½ΡΠΊΡΠ΄Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° promise.all. Π’ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΡΠΈ Π² Π΅Π΄ΠΈΠ½. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π²ΡΡΠΊΠ° Π½ΠΈΡΠΊΠ° Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΠΎΠ½Π΅ Π΅Π΄Π½ΠΎ ΠΈΠ·Π»ΡΡΠ²Π°Π½Π΅, Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΎΡ Π²ΡΡΠΊΠ° ΠΊΠ°ΡΠΎ ΠΌΠ°ΡΠΈΠ². ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΠ»Π΅Π΄ Π²ΡΡΠΊΠΎ ΠΈΠ·Π»ΡΡΠ²Π°Π½Π΅ ΠΎΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ, ΡΠΎΠ²Π° ΡΠ΅ Π΄Π°Π΄Π΅ Π½ΠΎΠ²ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ.
const { combineLatest, Observable } = Rx;
const { take } = RxOperators;
const observer_1 = Observable.create((observer) => {
let i = 1;
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 1000ΠΌΡ
setInterval(() => {
observer.next('a: ' + i++);
}, 1000);
});
const observer_2 = Observable.create((observer) => {
let i = 1;
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 750ΠΌΡ
setInterval(() => {
observer.next('b: ' + i++);
}, 750);
});
combineLatest(observer_1, observer_2).pipe(take(5));
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ-zip
Zip - ΡΠ°ΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΎΡ Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΡΠΎΠΊ ΠΈ ΡΠΎΡΠΌΠΈΡΠ° ΠΌΠ°ΡΠΈΠ² Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π·ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ. ΠΠΊΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π΅ ΠΈΠ΄Π²Π° ΠΎΡ Π½ΠΈΠΊΠΎΡ Π½ΠΈΡΠΊΠ°, ΡΠΎΠ³Π°Π²Π° Π³ΡΡΠΏΠ°ΡΠ° Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅ ΡΠΎΡΠΌΠΈΡΠ°Π½Π°.
const { zip, Observable } = Rx;
const { take } = RxOperators;
const observer_1 = Observable.create((observer) => {
let i = 1;
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 1000ΠΌΡ
setInterval(() => {
observer.next('a: ' + i++);
}, 1000);
});
const observer_2 = Observable.create((observer) => {
let i = 1;
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 750
setInterval(() => {
observer.next('b: ' + i++);
}, 750);
});
const observer_3 = Observable.create((observer) => {
let i = 1;
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 500
setInterval(() => {
observer.next('c: ' + i++);
}, 500);
});
zip(observer_1, observer_2, observer_3).pipe(take(5));
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ - forkJoin
forkJoin ΡΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π° ΠΊΡΠΌ Π½ΠΈΡΠΊΠΈ, Π½ΠΎ ΠΈΠ·Π»ΡΡΠ²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ Π½ΠΈΡΠΊΠΈ ΡΠ° Π·Π°Π²ΡΡΡΠ΅Π½ΠΈ.
const { forkJoin, Observable } = Rx;
const { take } = RxOperators;
const observer_1 = Observable.create((observer) => {
let i = 1;
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 1000ΠΌΡ
setInterval(() => {
observer.next('a: ' + i++);
}, 1000);
}).pipe(take(3));
const observer_2 = Observable.create((observer) => {
let i = 1;
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 750
setInterval(() => {
observer.next('b: ' + i++);
}, 750);
}).pipe(take(5));
const observer_3 = Observable.create((observer) => {
let i = 1;
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 500
setInterval(() => {
observer.next('c: ' + i++);
}, 500);
}).pipe(take(4));
forkJoin(observer_1, observer_2, observer_3);
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ-ΠΊΠ°ΡΡΠ°
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ°ΡΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΠΈΠ·Π»ΡΡΠ΅Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π² Π½ΠΎΠ²Π°.
const { Observable } = Rx;
const { take, map } = RxOperators;
Observable.create((observer) => {
let i = 1;
// ΠΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π· Π² 1000ΠΌΡ
setInterval(() => {
observer.next(i++);
}, 1000);
}).pipe(
map(x => x * 10),
take(3)
);
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ - ΡΠΏΠΎΠ΄Π΅Π»ΡΠ½Π΅, Π΄ΠΎΠΊΠΎΡΠ²Π°Π½Π΅
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ Π·Π° Π΄ΠΎΠΊΠΎΡΠ²Π°Π½Π΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ, ΡΠΎΠ΅ΡΡ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ°.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π²ΡΡΠ½Π΅ ΡΡΡΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊ Π² Π³ΠΎΡΠ΅Ρ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ ΡΠ° Π³ΠΎΡΠΎΠ²ΠΈ. ΠΠ΅ΠΊΠ° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΡΠ΅ΠΌΠ°ΡΠ°.
ΠΠΈΡΠ»ΠΈ Π½Π° Π³Π»Π°Ρ
Π ΡΠΎΠ³Π°Π²Π° ΠΎΡΠΈΠ΄ΠΎΡ Π΄Π° ΠΏΠΈΡ ΡΠ°ΠΉ. ΠΠΈΡΠ½Π° ΠΌΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ π
ΠΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ
Π’Π΅ΠΌΠ°ΡΠ° Π½Π° ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎΡΠΎ Π΅ ΠΎΡΠ»ΠΈΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π³ΠΎΡΠ΅ΡΠΈ ΡΠ΅ΠΌΠΈ. Π’Π΅Π·ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΡΠ° Π²ΠΈΠ΄ Ρ ΠΈΠ±ΡΠΈΠ΄, ΠΊΠΎΠΉΡΠΎ Π΄Π΅ΠΉΡΡΠ²Π° ΠΊΠ°ΡΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π» Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ΠΌΠ°ΡΠ° Π΅ Π³ΠΎΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΡΠΏΠΈΡΠ΅ΡΠ΅ ΠΎΡ Π½Π΅Ρ. ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΡΠΎΠ²Π° ΡΠ°:
- ΡΠ»Π΅Π΄Π²Π°Ρ - ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ ΠΊΡΠΌ ΠΏΠΎΡΠΎΠΊΠ°
- Π³ΡΠ΅ΡΠΊΠ° - Π³ΡΠ΅ΡΠΊΠ° ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΈΡΠΊΠ°
- Π·Π°Π²ΡΡΡΠ΅Π½ - ΠΊΡΠ°ΠΉ Π½Π° Π½ΠΈΡΠΊΠ°ΡΠ°
- subscribe - Π°Π±ΠΎΠ½ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ΅ Π·Π° ΠΏΠΎΡΠΎΠΊ
- unsubscribe - ΠΎΡΠΏΠΈΡΠ²Π°Π½Π΅ ΠΎΡ ΠΏΠΎΡΠΎΠΊΠ°
- asObservable - ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°ΠΉΡΠ΅ ΡΠ΅ Π² Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»
- toPromise - ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ° ΡΠ΅ Π² ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅
Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅ΡΠ΅ 4 5 Π²ΠΈΠ΄Π° ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΈ.
ΠΠΈΡΠ»ΠΈ Π½Π° Π³Π»Π°Ρ
ΠΠ°Π·Π°Ρ 4 Π½Π° ΠΏΠΎΡΠΎΠΊΠ°, Π½ΠΎ ΡΠ΅ ΠΎΠΊΠ°Π·Π°, ΡΠ΅ ΡΠ° Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½. ΠΠ°ΠΊΡΠΎ ΡΠ΅ ΠΊΠ°Π·Π²Π°, ΠΆΠΈΠ²Π΅ΠΉ ΠΈ ΡΠ΅ ΡΡΠΈ.
ΠΡΠΎΡΡΠ° ΡΠ΅ΠΌΠ° new Subject()
- Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ Π²ΠΈΠ΄ ΡΠ΅ΠΌΠΈ. Π‘ΡΠ·Π΄Π°Π΄Π΅Π½ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ. ΠΡΠ΅Π΄Π°Π²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π΄ΠΎΡΠ»ΠΈ ΡΠ°ΠΌΠΎ ΡΠ»Π΅Π΄ Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½ΡΠ°.
BehaviorSubject new BehaviorSubject( defaultData<T> )
- ΡΠΏΠΎΡΠ΅Π΄ ΠΌΠ΅Π½ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈΡΡ ΡΠΈΠΏ ΡΡΠ±Π΅ΠΊΡΠΈ. ΠΡ
ΠΎΠ΄ΡΡ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΠΈΠ½Π°Π³ΠΈ Π·Π°ΠΏΠ°Π·Π²Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π±ΡΠΎΠΉ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ ΠΏΡΠΈ Π°Π±ΠΎΠ½ΠΈΡΠ°Π½Π΅. Π’ΠΎΠ·ΠΈ ΠΊΠ»Π°Ρ ΡΡΡΠΎ ΠΈΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ, ΠΊΠΎΠΉΡΠΎ Π²ΡΡΡΠ° ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΠΏΠΎΡΠΎΠΊΠ°.
ReplaySubject new ReplaySubject(bufferSize?: number, windowTime?: number)
- ΠΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π·Π΅ΠΌΠ΅ ΠΊΠ°ΡΠΎ ΠΏΡΡΠ²ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π±ΡΡΠ΅ΡΠ° ΠΎΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π² ΡΠ΅Π±Π΅ ΡΠΈ, ΠΈ Π²ΡΠΎΡΠΈΡ ΠΏΡΡ, ΠΏΡΠ΅Π· ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ.
Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π΅Π½ ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ new AsyncSubject()
- Π½ΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΠΏΡΠΈ Π°Π±ΠΎΠ½ΠΈΡΠ°Π½Π΅ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ Π²ΡΡΠ½Π°ΡΠ° ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π·Π°Π²ΡΡΡΠ΅Π½Π°. Π©Π΅ Π±ΡΠ΄Π΅ Π²ΡΡΠ½Π°ΡΠ° ΡΠ°ΠΌΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΠΏΠΎΡΠΎΠΊΠ°.
WebSocketSubject new WebSocketSubject(urlConfigOrSource: string | WebSocketSubjectConfig<T> | Observable<T>, destination?: Observer<T>)
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΌΡΠ»ΡΠΈ Π·Π° ΡΠΎΠ²Π° ΠΈ Π°Π· ΡΠ°ΠΌΠΈΡΡ Π³ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ. ΠΠΎΠΉΡΠΎ Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ, ΠΏΠΈΡΠ΅ΡΠ΅, Π½ΠΈΠ΅ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ.
ΡΡ. Π, ΠΎΠ±ΠΌΠΈΡΠ»ΠΈΡ ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΠΊΠ°ΠΆΠ° Π΄Π½Π΅Ρ. ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΅ Π±ΠΈΠ»Π° ΠΏΠΎΠ»Π΅Π·Π½Π°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ ΡΠΏΠΈΡΡΠΊΠ° Ρ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ° Π² ΡΠ°Π·Π΄Π΅Π»Π° ΠΠΎΠ»Π΅Π·Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠΎΠ»Π΅Π·Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
ΠΡΡΠ·ΠΊΠ° ΠΊΡΠΌ ΠΏΠΎΡΠΎΠΊΠ° ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ JS: ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΡΡΠ΅ΠΊ Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ JS: Π¦ΠΈΠΊΡΠ»ΡΡ Π½Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ°, Async ΠΈ ΠΏΠ΅Ρ Π½Π°ΡΠΈΠ½Π° Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° Π²Π°ΡΠΈΡ ΠΊΠΎΠ΄ Ρ async / await ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ ΡΠΈΠΊΡΠ»ΡΡ Π½Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ° Π² JavaSript ΠΠ²ΠΎΠ»ΡΡΠΈΡΡΠ° Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡ JavaScript ΠΠ°ΠΊΠ²ΠΎ Π΅ RxJS ΠΈ Π·Π°ΡΠΎ Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π° Π·Π½Π°Π΅ΡΠ΅ Π·Π° Π½Π΅Π³ΠΎ
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° RxJS Π£ΡΠΎΠΊ Π·Π° RxJS Observables β Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ ΠΈ Π°Π±ΠΎΠ½ΠΈΡΠ°Π½Π΅ Π·Π° Observables RXJS: ΠΠΎΡΠ΅ΡΠΈ ΠΈ ΡΡΡΠ΄Π΅Π½ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΈ ΠΠ»Π°ΡΠΎΠ²Π΅, ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Observable. ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ. RxJS ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ ΡΡΠ΅Π· ΠΏΡΠΈΠΌΠ΅Ρ API ΡΠΏΠΈΡΡΠΊ ΠΠ°ΡΠΈΠ°ΡΠΈΠΈ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΈ Π³ΡΠ°ΡΠΈΠΊ Π² RxJS
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com