αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αžŸαž½αžŸαŸ’αžαžΈβ€‹αž’αŸ’αž“αž€β€‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαŸ” Sergey Omelnitsky αž€αŸ†αž–αž»αž„β€‹αž‘αžΆαž€αŸ‹αž‘αž„αŸ” αž˜αž·αž“αž™αžΌαžšαž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αž€αž“αŸ’αž›αž„αž‘αŸ…αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž•αŸ’αžŸαžΆαž™αž›αžΎαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαžαž·αž€αž˜αŸ’αž˜ αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript αŸ” αžαŸ’αž„αŸƒαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž€αžαŸ‹αž…αŸ†αžŽαžΆαŸ†αž›αžΎαžŸαž˜αŸ’αž—αžΆαžšαŸˆαž“αŸαŸ‡αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž»αž“αž–αŸαž›αž™αžΎαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαž˜αŸ’αž—αžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž€αŸ†αžŽαžαŸ‹αž…αŸ†αžŽαžΆαŸ†αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αž·αž™αž˜αž“αŸαž™αŸ– αžαžΎαž‡αž„αŸ‹αž“αž·αž„αž‡αž½αžšαž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈ?

αž‡αž„αŸ‹ αž‚αžΊαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžŠαž»αŸ†αžŠαŸ‚αž›αž’αžΆαžαž»αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž“αŸ…αž›αžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ LIFO αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž…αžΌαž›αžŠαŸ†αž”αžΌαž„

αž‡αž½αžš αž‚αžΊαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αžŠαŸ‚αž›αž’αžΆαžαž»αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž“αŸ…αž›αžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ FIFO αžŠαŸ†αž”αžΌαž„αž…αžΌαž›αžŠαŸ†αž”αžΌαž„

αž˜αž·αž“αž’αžΈαž‘αŸ αžαŸ„αŸ‡αž”αž“αŸ’αžαŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

JavaScript αž‚αžΊαž‡αžΆαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž˜αžΆαž“αžαŸ’αžŸαŸ‚αžαŸ‚αž˜αž½αž™αŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆ αž˜αžΆαž“αžαŸ‚αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž˜αž½αž™αžαŸ’αžŸαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž“αž·αž„αž‡αž„αŸ‹αž˜αž½αž™αž“αŸ…αž›αžΎαž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž‡αžΆαž‡αž½αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ JavaScript αž’αžΆαž…αž’αŸ’αžœαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαŸ‚αž˜αž½αž™αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αžΉαž„αžšαž„αŸ‹αž…αžΆαŸ†αžœαŸαž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž›αžΎαž‡αž„αŸ‹αžšαž αžΌαžαžŠαž›αŸ‹αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αŸ”

αž αŸ…αž‡αž„αŸ‹ αž‚αžΊαž‡αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž“αž·αž™αžΆαž™αžŠαŸ„αž™αžŸαžΆαž˜αž‰αŸ’αž‰ αž€αžαŸ‹αžαŸ’αžšαžΆαž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž‘αžΈαž€αž“αŸ’αž›αŸ‚αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž™αžΎαž„αž“αŸ…αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž˜αž»αžαž„αžΆαžšαž˜αž½αž™ αž™αžΎαž„αžšαž»αž‰αž’αžΆαžαž»αžšαž”αžŸαŸ‹αžœαžΆαž‘αŸ…αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž›αžΎαž“αŸƒαž‡αž„αŸ‹αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαž‘αž”αŸ‹αž–αžΈαž’αž“αž»αž‚αž˜αž“αŸαž˜αž½αž™ αž™αžΎαž„αž”αž‰αŸ’αž…αžΌαž›αž’αžΆαžαž»αž€αŸ†αž–αžΌαž›αž”αŸ†αž•αž»αžαž–αžΈαž‡αž„αŸ‹ αž αžΎαž™αž”αž‰αŸ’αž…αž”αŸ‹αž‘αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž™αžΎαž„αž αŸ…αžαžΆαž’αž“αž»αž‚αž˜αž“αŸαŸ” αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž’αŸ’αžœαžΈβ€‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹β€‹αžŠαŸ‚αž›β€‹αž‡αž„αŸ‹β€‹αž’αžΆαž…β€‹αž’αŸ’αžœαžΎβ€‹αž”αžΆαž“αŸ” αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαŸ†αžŽαž½αžšαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžαŸ’αž›αžΆαŸ†αž„αžŽαžΆαžŸαŸ‹αŸ” αžαžΎαž’αžŸαž˜αž€αžΆαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„ JavasScript αž™αŸ‰αžΆαž„αžŠαžΌαž…αž˜αŸ’αžαŸαž…?

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž‡αžΆαž€αžΆαžšαž–αž·αž αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž‡αž„αŸ‹ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž˜αžΆαž“αž‡αž½αžšαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‚αŸαž αŸ…αžαžΆ WebAPI αŸ” αž˜αž»αžαž„αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž½αžšαž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžαžΆαž˜αž›αŸ†αžŠαžΆαž”αŸ‹αž›αŸ†αžŠαŸ„αž™αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‡αž„αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αž’αžΆαžαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” αž˜αžΆαž“αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡αž‘αŸαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž»αž‰αž–αžΈαž‡αž½αžšαž‘αŸ…αž‡αž„αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž’αžΆαžαž»αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž˜αž½αž™αž“αŸ…αž›αžΎαž‡αž„αŸ‹αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αž“αŸ„αŸ‡αž–αž½αž€αžœαžΆαž˜αž·αž“αž’αžΆαž…αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‡αž„αŸ‹αž”αžΆαž“αž‘αŸαŸ” αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž“αŸαŸ‡ αžŠαŸ‚αž›αž˜αž»αžαž„αžΆαžšαž αŸ…αžαžΆαž˜αž–αŸαž›αžœαŸαž›αžΆαž’αžŸαŸ‹αž–αŸαž›αž…αŸ’αžšαžΎαž“αžαŸ‚αž˜αž·αž“αž˜αžΆαž“αž—αžΆαž–αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž–αŸαž›αžœαŸαž›αžΆ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž˜αž»αžαž„αžΆαžšαž˜αž·αž“αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž–αžΈαž‡αž½αžšαž‘αŸ…αž‡αž„αŸ‹αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž–αŸαž‰αŸ”

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ займёмся Π΅Π³ΠΎ ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΌ Β«Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌΒ». Π’Π°ΠΊΠΆΠ΅ посмотрим, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом происходит Π² систСмС.

console.log('Hi');
setTimeout(function cb1() {
    console.log('cb1');
}, 5000);
console.log('Bye');

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

1) αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαž€αŸ†αž–αž»αž„αž€αžΎαžαž‘αžΎαž„αž‘αŸαŸ” αž€αž»αž„αžŸαžΌαž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž‚αžΊαž…αŸ’αž”αžΆαžŸαŸ‹ αž‡αž„αŸ‹αž€αžΆαžšαž αŸ…αž‚αžΊαž‘αž‘αŸαŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

2) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ console.log('Hi') αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž‡αž„αŸ‹αž€αžΆαžšαž αŸ…αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

3) αž αžΎαž™αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž–αŸαž‰

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

4) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ console.log('Hi') αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž…αŸαž‰αž–αžΈαž‡αž„αŸ‹αž€αžΆαžšαž αŸ…αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

5) αž₯αž‘αžΌαžœαž“αŸαŸ‡αž”αž“αŸ’αžαž‘αŸ…αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ setTimeout (αž˜αž»αžαž„αžΆαžš cb1() {… }) αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž‡αž„αŸ‹αž€αžΆαžšαž αŸ…αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

6) αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ setTimeout(function cb1() {… }) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž˜αŸ‰αŸ„αž„αžŠαŸ‚αž›αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž˜αž½αž™αž“αŸƒ Web API αŸ” αžœαžΆαž“αžΉαž„αž’αŸ’αžœαžΎαž€αžΆαžšαžšαžΆαž”αŸ‹αžαž™αž€αŸ’αžšαŸ„αž™αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

7) αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ setTimeout(function cb1() {... }) αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αžαŸ’αž›αž½αž“ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαž€αž…αŸαž‰αž–αžΈαž‡αž„αŸ‹αž€αžΆαžšαž αŸ…αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

8) αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ console.log('Bye') αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž‡αž„αŸ‹αž€αžΆαžšαž αŸ…αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

9) αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ console.log('Bye') αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

10) αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ console.log('Bye') αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž…αŸαž‰αž–αžΈαž‡αž„αŸ‹αž€αžΆαžšαž αŸ…αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

11) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹ 5000 ms αž”αžΆαž“αž€αž“αŸ’αž›αž„αž•αž»αžαž‘αŸ… αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž˜αŸ‰αŸ„αž„αž“αžΉαž„αž”αž‰αŸ’αž…αž”αŸ‹ αž αžΎαž™αžŠαžΆαž€αŸ‹ callback cb1 αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž½αžš callbackαŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

12) αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž™αž€αž˜αž»αžαž„αžΆαžš cb1 αž–αžΈαž‡αž½αžšαž αŸ…αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αž αžΎαž™αžŠαžΆαž€αŸ‹αžœαžΆαž“αŸ…αž›αžΎαž‡αž„αŸ‹αž€αžΆαžšαž αŸ…αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

13) αž˜αž»αžαž„αžΆαžš cb1 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· αž αžΎαž™αž”αž“αŸ’αžαŸ‚αž˜ console.log('cb1') αž‘αŸ…αž€αŸ’αž“αž»αž„ call stack αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

14) αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ console.log('cb1') αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

15) αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ console.log('cb1') αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž…αŸαž‰αž–αžΈαž‡αž„αŸ‹αž€αžΆαžšαž αŸ…αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

16) αž˜αž»αžαž„αžΆαžš cb1 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž…αŸαž‰αž–αžΈαž‡αž„αŸ‹αž€αžΆαžšαž αŸ…αŸ”

αžαŸ„αŸ‡αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαž€αŸ’αž“αž»αž„αžŒαžΈαžŽαžΆαž˜αž·αž€αŸ–

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹, αž™αžΎαž„αž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αžŸαž˜αž€αžΆαž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„ 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 αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž˜αž»αžαž„αžΆαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž–αž½αž€αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αžŠαžΌαž…αž’αžαŸαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸ…αž˜αž»αžαž„αžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž“αŸαŸ‡αž‡αžΆαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αžΆαžšαž αŸ…αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αž”αžΆαž“αž€αžΎαžαŸ” αž αžΎαž™αžœαžΆαžαŸ’αžšαž‡αžΆαž€αŸ‹ αžŸαž”αŸ’αž”αžΆαž™ αž“αž·αž„αž›αŸαž„αžŸαžΎαž… αžšαž αžΌαžαžŠαž›αŸ‹αžœαžΆαž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαžŸαŸ„αž€αžŸαŸ… αžŸαŸ„αž€αžŸαŸ… αž“αž·αž„αžŸαŸ„αž€αžŸαŸ…αŸ” αž αŸαžαž»αž’αŸ’αžœαžΈ? αžœαžΆαžŸαžΆαž˜αž‰αŸ’αž‰αŸ–

  • αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αžΌαžŠαž€αžΎαž“αž‘αžΎαž„ αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ αž“αž·αž„αž‡αžΆαž”αŸ‹αž‚αžΆαŸ†αž„αž˜αŸ’αžαž„αž αžΎαž™αž˜αŸ’αžαž„αž‘αŸ€αž - "callback hell" αŸ”
  • αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αŸ†αž αž»αžŸαž’αžΆαž…αž„αžΆαž™αž“αžΉαž„αžαž€αžαžΆαž“αŸ”
  • αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αžαŸ’αžšαž‘αž”αŸ‹αž€αž“αŸ’αžŸαŸ„αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αž”αžΆαž“αž‘αŸαŸ”

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž˜αž€αžŠαž›αŸ‹αž“αŸƒ 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

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαžŸαž“αŸ’αž™αžΆαž˜αžΆαž“αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαžŸαž“αŸ’αž™αžΆαž˜αž·αž“αž’αžΆαž…αž›αž»αž”αž…αŸ„αž›αž”αžΆαž“αž‘αŸαž”αžΎαž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαžšαžΆαŸ†αž‡αžΆαž˜αž½αž™ tambourine αž αžΎαž™αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αžαž“αŸ„αŸ‡αž‚αžΊαžαžΆαžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αž›αŸƒαž˜αž½αž™αŸ”

αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹ αž™αžΎαž„αž”αžΆαž“αž…αžΌαž›αž‘αŸ…αž‡αž·αžαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαžαž·αž€αž˜αŸ’αž˜αž™αŸ‰αžΆαž„αžšαž›αžΌαž“αŸ” αž’αž»αž‰αž‘αŸ’αžšαžΆαž“αŸ‹? αž‡αžΆαžŸαŸ†αžŽαžΆαž„αž›αŸ’αž’ αž’αŸ’αž“αž€αž’αžΆαž…αž‘αŸ…αž’αŸ’αžœαžΎαžαŸ‚αžαŸ’αž›αŸ‡ αž‚αž·αžαž’αŸ†αž–αžΈαžœαžΆ αž αžΎαž™αžαŸ’αžšαž›αž”αŸ‹αž˜αž€αž’αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αŸ” αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αž“αŸ’αžαŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαžαž·αž€αž˜αŸ’αž˜β€Šαž‚αžΊαž‡αžΆαž‚αŸ†αžšαžΌαž“αŸƒαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž•αŸ’αžαŸ„αžαž›αžΎαž›αŸ†αž αžΌαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αž·αž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΆαžšαž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αŸ” αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αžαžΆαžαžΎαžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαŸ”

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ссылку Π½Π° элСмСнт
const input = ducument.querySelector('input');

const eventsArray = [];

// ΠŸΡƒΡˆΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ событиС Π² массив eventsArray
input.addEventListener('keyup',
    event => eventsArray.push(event)
);

αž…αžΌαžšαžŸαŸ’αžšαž˜αŸƒαžαžΆαž™αžΎαž„αž˜αžΆαž“αž€αž“αŸ’αž›αŸ‚αž„αž”αž‰αŸ’αž…αžΌαž›αŸ” αž™αžΎαž„αž€αŸ†αž–αž»αž„αž”αž„αŸ’αž€αžΎαžαž’αžΆαžšαŸαž˜αž½αž™ αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΆαž›αŸ‹ keyup αž“αŸƒαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž”αž‰αŸ’αž…αžΌαž› αž™αžΎαž„αž“αžΉαž„αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„αž’αžΆαžšαŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž’αžΆαžšαŸαžšαž”αžŸαŸ‹αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαž˜αŸ’αžšαŸ€αž”αžαžΆαž˜αž–αŸαž›αžœαŸαž›αžΆ i.e. αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž“αŸƒαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž€αŸ’αžšαŸ„αž™αž‚αžΊαž’αŸ†αž‡αžΆαž„αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž“αŸƒαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž˜αž»αž“αŸ—αŸ” αž’αžΆαžšαŸαž”αŸ‚αž”αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‚αŸ†αžšαžΌαžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸƒαž›αŸ†αž αžΌαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αž‘αžΆαž“αŸ‹αž‡αžΆαž›αŸ†αž αžΌαžšαž‘αŸαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž’αžΆαžšαŸαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαžŸαŸ’αž‘αŸ’αžšαžΈαž˜αžŠαŸ„αž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αž’αžΆαž…αž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αžŠαž›αŸ‹αž’αžαž·αžαž·αž‡αž“αž˜αž½αž™αž…αŸ†αž“αž½αž“αžαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αž˜αžΈαž”αžΆαž“αž˜αž€αžŠαž›αŸ‹αžœαžΆαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž˜αž€αžŠαž›αŸ‹αž“αž·αž™αž˜αž“αŸαž™αž“αŸƒαž›αŸ†αž αžΌαžšαŸ”

αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž‘αž·αž“αŸ’αž“αž“αŸαž™

const { interval } = Rx;
const { take } = RxOperators;

interval(1000).pipe(
    take(4)
)

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž›αŸ†αž αžΌαžšβ€Šαž‚αžΊαž‡αžΆαž’αžΆαžšαŸαž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αžαž˜αŸ’αžšαŸ€αž”αžαžΆαž˜αž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž’αžΆαž…αž”αž„αŸ’αž αžΆαž‰αžαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ” αž₯αž‘αžΌαžœαžŸαŸ’αžšαž˜αŸƒαž˜αžΎαž›αžαžΆαžαžΎαžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ‰αž»αžŽαŸ’αžŽαžΆαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αžΌαžŠαžŠαŸ‚αž›αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž˜αž½αž™αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž αŸ…αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž•αŸ’αžŸαŸαž„αŸ—αž“αŸƒαž€αžΌαžŠαŸ” αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαžœαžŸαŸ’αž‘αŸ’αžšαžΈαž˜ αž αžΎαž™αžœαžΆαž“αžΉαž„αž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αžŠαž›αŸ‹αž™αžΎαž„αž“αŸ…αž–αŸαž›αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ” αž αžΎαž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ RxJs αž’αžΆαž…αž’αŸ’αžœαžΎαžœαžΆαž”αžΆαž“αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

RxJS αž‚αžΊαž‡αžΆαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž› αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αž’αŸ‚αž€αž›αžΎαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ αžŠαŸ„αž™αž”αŸ’αžšαžΎαž›αŸ†αžŠαžΆαž”αŸ‹αžŠαŸ‚αž›αž’αžΆαž…αžŸαž„αŸ’αž€αŸαžαž”αžΆαž“αŸ” αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž”αŸ’αžšαž—αŸαž‘αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž’αžΆαž…αž’αž„αŸ’αž€αŸαžαž”αžΆαž“, αž”αŸ’αžšαž—αŸαž‘αž‡αŸ†αž“αž½αž™αž‡αžΆαž…αŸ’αžšαžΎαž“ (αž’αŸ’αž“αž€αžŸαž„αŸ’αž€αŸαžαž€αžΆαžšαžŽαŸ, αž’αŸ’αž“αž€αžšαŸ€αž”αž…αŸ†αž€αžΆαž›αžœαž·αž—αžΆαž‚, αž˜αž»αžαžœαž·αž‡αŸ’αž‡αžΆ) αž“αž·αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ αžŠαžΌαž…αž‡αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž› (αž•αŸ‚αž“αž‘αžΈ αžαž˜αŸ’αžšαž„ αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™ αžšαžΆαž›αŸ‹ αž“αž·αž„αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž–αžΈ JavaScript Array) αŸ”

αž…αžΌαžšαž™αžΎαž„αž™αž›αŸ‹αž–αžΈαž‚αŸ„αž›αž‚αŸ†αž“αž·αžαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αŸαŸ‡αŸ”

αž’αžΆαž…αžŸαž„αŸ’αž€αŸαžαž”αžΆαž“, αž’αŸ’αž“αž€αžŸαž„αŸ’αž€αŸαž, αž’αŸ’αž“αž€αž•αž›αž·αž

Observable αž‚αžΊαž‡αžΆαž”αŸ’αžšαž—αŸαž‘αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸ†αž”αžΌαž„αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž˜αžΎαž›αŸ” αžαŸ’αž“αžΆαž€αŸ‹αž“αŸαŸ‡αž˜αžΆαž“αž•αŸ’αž“αŸ‚αž€αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž RxJs αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αžŠαŸ‚αž›αž’αžΆαž…αžŸαž„αŸ’αž€αŸαžαž”αžΆαž“ αžŠαŸ‚αž›αž’αžΆαž…αž‡αžΆαžœαž”αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‡αžΆαžœαŸ”

Observable αž’αž“αž»αžœαžαŸ’αžαž™αž“αŸ’αžαž€αžΆαžšαž‡αŸ†αž“αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž– αžŠαŸ‚αž›αž αŸ…αžαžΆ αž’αŸ’αž“αž€αžŸαž„αŸ’αž€αŸαžαž€αžΆαžšαžŽαŸ. αž”αŸ’αžšαž—αž–αž“αŸƒαžαž˜αŸ’αž›αŸƒαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŸαž„αŸ’αž€αŸαžαž€αžΆαžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ αž’αŸ’αž“αž€αž•αž›αž·αž. αž“αŸαŸ‡αž’αžΆαž…αž‡αžΆαž’αžΆαžšαŸ αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž‘αžΎαž„αžœαž·αž‰ αžšαž“αŸ’αž’αž”αžŽαŸ’αžαžΆαž‰ αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ”αž›αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž™αžΎαž„β€‹αž’αžΆαž…β€‹αž“αž·αž™αžΆαž™β€‹αž”αžΆαž“β€‹αžαžΆβ€‹ Observable αž‚αžΊβ€‹αž‡αžΆβ€‹ conductor αžšαžœαžΆαž„β€‹ Producer αž“αž·αž„ ObserverαŸ”

Observable αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ Observer αž”αžΈαž”αŸ’αžšαž—αŸαž‘αŸ–

  • αž”αž“αŸ’αž‘αžΆαž”αŸ‹ - αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αž˜αžΈαŸ”
  • error - αž€αŸ†αž αž»αžŸαž˜αž½αž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž›αŸ†αžŠαžΆαž”αŸ‹αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αžŸαžΆαžšαž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž˜αž½αž™αŸ” αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αž€αŸαž”αž„αŸ’αž€αž”αŸ‹αž“αŸαž™αž’αŸ†αž–αžΈαž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž›αŸ†αžŠαžΆαž”αŸ‹αŸ”
  • αž–αŸαž‰αž›αŸαž‰ β€” αžŸαž‰αŸ’αž‰αžΆαž’αŸ†αž–αžΈαž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž›αŸ†αžŠαžΆαž”αŸ‹αŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž“αžΉαž„αž˜αž·αž“αž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αž˜αžΈαž‘αŸ€αžαž‘αŸαŸ”

αžαŸ„αŸ‡αž˜αžΎαž›αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αŸ–

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž™αžΎαž„αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαž˜αŸ’αž›αŸƒ 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 αŸ” αž™αžΎαž„αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž–αŸαž‰αž“αž·αž™αž˜αž”αŸ†αž•αž»αž αž αžΎαž™αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŠαŸ„αž™αž”αŸ’αžšαžΎαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž–αŸαžαŸŒαž˜αžΆαž“αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαŸ”

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - αž“αŸƒ

αž…αžΌαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž‡αŸ†αž“αž½αž™αž“αŸƒαŸ” αžœαžΆαž”αž„αŸ’αž€αžΎαž Observable αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžαž˜αŸ’αž›αŸƒαžŸαžΆαž˜αž‰αŸ’αž‰αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - αžαž˜αŸ’αžšαž„

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžαž˜αŸ’αžšαž„ αžŠαžΌαž…αžŠαŸ‚αž›αžˆαŸ’αž˜αŸ„αŸ‡αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰ αžαŸ’αžšαž„αžŸαž‰αŸ’αž‰αžΆαžŸαŸ’αž‘αŸ’αžšαžΈαž˜αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžαŸ’αžšαž‘αž”αŸ‹αž–αž·αž αžœαžΆαž“αžΉαž„αžšαŸ†αž›αž„αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαŸ”

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - αž™αž€

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž™αž€ - αž™αž€αžαž˜αŸ’αž›αŸƒαž“αŸƒαž…αŸ†αž“αž½αž“ emitters αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž”αž‰αŸ’αž…αž”αŸ‹αŸ”

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - debounceTime

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

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)
);  

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - takeWhile

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž”αž‰αŸ’αž…αŸαž‰αžαž˜αŸ’αž›αŸƒαžšαž αžΌαžαžŠαž›αŸ‹ takeWhile αžαŸ’αžšαž‘αž”αŸ‹αž˜αž·αž“αž–αž·αž αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αžœαžΆαžˆαž”αŸ‹αž‡αžΆαžœαž–αžΈαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αŸ”

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 )
);  

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž…αž»αž„αž€αŸ’αžšαŸ„αž™

ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ combineLatest Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° promise.all. Он ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ сдСлаСт хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ эмит, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ послСдниС значСния ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π² Π²ΠΈΠ΄Π΅ массива. Π”Π°Π»Π΅Π΅, послС любого эмита ΠΈΠ· ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ значСния.

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

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));

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - zip

Zip - αžšαž„αŸ‹αž…αžΆαŸ†αžαž˜αŸ’αž›αŸƒαž–αžΈαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž“αžΈαž˜αž½αž™αŸ— αž αžΎαž™αž”αž„αŸ’αž€αžΎαžαž’αžΆαžšαŸαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžαž˜αŸ’αž›αŸƒαž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžαž˜αŸ’αž›αŸƒαž˜αž·αž“αž˜αž€αž–αžΈαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αžŽαžΆαž˜αž½αž™αž‘αŸ αž“αŸ„αŸ‡αž€αŸ’αžšαž»αž˜αž“αžΉαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž‘αŸαŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

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));

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - forkJoin

forkJoin αž€αŸαž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž•αž„αžŠαŸ‚αžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž”αž‰αŸ’αž…αŸαž‰αžαž˜αŸ’αž›αŸƒαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

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);

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - αž•αŸ‚αž“αž‘αžΈ

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αž•αŸ‚αž“αž‘αžΈαž”αŸ†αž”αŸ’αž›αŸ‚αž„αžαž˜αŸ’αž›αŸƒ emitter αž‘αŸ…αž‡αžΆαžαŸ’αž˜αžΈαž˜αž½αž™αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

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)
);

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€, αž”αŸ‰αŸ‡

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹ αž–αŸ„αž›αž‚αžΊαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž˜αž·αž“αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž›αŸ†αžŠαžΆαž”αŸ‹αŸ”

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž’αžΆαž…αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αžαŸ’αžšαž‡αžΆαž€αŸ‹αž‘αŸ…αž‡αžΆαž€αŸ’αžαŸ…αŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„ JavaScript (Callback, Promise, RxJs)

αž™αžΎαž„αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαŸ” αž…αžΌαžšαž”αž“αŸ’αžαž‘αŸ…αž”αŸ’αžšαž’αžΆαž“αž”αž‘αŸ”

αž‚αž·αžαžαŸ’αž›αžΆαŸ†αž„αŸ—

αžšαž½αž…αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž€αŸαž‘αŸ…αž•αžΉαž€αžαŸ‚αŸ” αžαŸ’αž‰αž»αŸ†αž’αž»αž‰αž‘αŸ’αžšαžΆαž“αŸ‹αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž‘αžΆαŸ†αž„αž“αŸαŸ‡πŸ˜€

αž‚αŸ’αžšαž½αžŸαžΆαžšαž”αŸ’αžšαž’αžΆαž“αž”αž‘

αž‚αŸ’αžšαž½αžŸαžΆαžšαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž›αŸ†αž αžΌαžšαž€αŸ’αžαŸ…αŸ” αžαŸ’αž“αžΆαž€αŸ‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αŸ’αžšαž—αŸαž‘αž€αžΌαž“αž€αžΆαžαŸ‹αžŠαŸ‚αž›αžŠαžΎαžšαžαž½αž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαž‡αžΆαž’αŸ’αž“αž€αžŸαž„αŸ’αž€αŸαž αž“αž·αž„αžŸαž„αŸ’αž€αŸαžαŸ” αžŠαŸ„αž™αžŸαžΆαžšαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž‚αžΊαž‡αžΆαžšαžΏαž„αž€αŸ’αžαŸ…αž‚αž‚αž»αž€ αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαžˆαž”αŸ‹αž‡αžΆαžœαž–αžΈαžœαžΆαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αž“αŸ„αŸ‡ αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαŸ–

  • αž”αž“αŸ’αž‘αžΆαž”αŸ‹ - αž€αžΆαžšαž•αŸ’αž‘αŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αž˜αžΈαž‘αŸ…αžŸαŸ’αž‘αŸ’αžšαžΈαž˜
  • αž€αŸ†αž αž»αžŸ - αž€αŸ†αž αž»αžŸαž“αž·αž„αž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™
  • αž”αž‰αŸ’αž…αž”αŸ‹ - αž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™
  • αž‡αžΆαžœ - αž‡αžΆαžœαž€αžΆαžšαž•αŸ’αžŸαžΆαž™
  • αžˆαž”αŸ‹αž‡αžΆαžœ - αžˆαž”αŸ‹αž‡αžΆαžœαž–αžΈαžŸαŸ’αž‘αŸ’αžšαžΈαž˜
  • asObservable - αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αž‘αŸ…αž‡αžΆαž’αŸ’αž“αž€αžŸαž„αŸ’αž€αŸαžαž€αžΆαžšαžŽαŸ
  • to Promise - αž”αŸ†αž”αŸ’αž›αŸ‚αž„αž‘αŸ…αž‡αžΆαž€αžΆαžšαžŸαž“αŸ’αž™αžΆ

αž˜αž»αžαžœαž·αž‡αŸ’αž‡αžΆαž˜αžΆαž“ ៀ αŸ₯ αž”αŸ’αžšαž—αŸαž‘αŸ”

αž‚αž·αžαžαŸ’αž›αžΆαŸ†αž„αŸ—

αž˜αžΆαž“β€‹αž˜αž“αž»αžŸαŸ’αžŸ 4 αž“αžΆαž€αŸ‹β€‹αž€αŸ†αž–αž»αž„β€‹αž“αž·αž™αžΆαž™β€‹αž“αŸ…β€‹αž›αžΎβ€‹αžŸαŸ’αž‘αŸ’αžšαžΈαž˜ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžœαžΆβ€‹αž”αžΆαž“β€‹αž€αŸ’αž›αžΆαž™β€‹αž‡αžΆβ€‹αž–αž½αž€αž‚αŸβ€‹αž”αžΆαž“β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αž˜αŸ’αž“αžΆαž€αŸ‹β€‹αž‘αŸ€αžαŸ” αžŠαžΌαž…αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž“αž·αž™αžΆαž™αžαžΆαžšαžŸαŸ‹αž“αŸ…αž“αž·αž„αžšαŸ€αž“αŸ”

αž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŸαžΆαž˜αž‰αŸ’αž‰ new Subject()- αž”αŸ’αžšαž—αŸαž‘αž˜αž»αžαžœαž·αž‡αŸ’αž‡αžΆαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαŸ” αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαŸ” αž”αž‰αŸ’αž‡αžΌαž“αžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž‡αžΆαžœαŸ”

αž”αŸ’αžšαž’αžΆαž“αž”αž‘αž’αžΆαž€αž”αŸ’αž”αž€αž·αžšαž·αž™αžΆ new BehaviorSubject( defaultData<T> ) - αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž”αŸ’αžšαž—αŸαž‘αž”αŸ’αžšαž’αžΆαž“αž”αž‘αž‘αžΌαž‘αŸ…αž”αŸ†αž•αž»αžαŸ” αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž™αž€αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ” αžαŸ‚αž„αžαŸ‚αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸƒαž”αž‰αŸ’αž αžΆαž…αž»αž„αž€αŸ’αžšαŸ„αž™ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž“αŸ…αž–αŸαž›αž‡αžΆαžœαŸ” αžαŸ’αž“αžΆαž€αŸ‹αž“αŸαŸ‡αž€αŸαž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžαž˜αŸ’αž›αŸƒαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž•αž„αžŠαŸ‚αžš αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž›αž‘αŸ’αž’αž•αž›αžαž˜αŸ’αž›αŸƒαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸƒαž…αžšαž“αŸ’αžαŸ”

αž…αžΆαž€αŸ‹αž‘αžΎαž„αžœαž·αž‰αž”αŸ’αžšαž’αžΆαž“αž”αž‘ new ReplaySubject(bufferSize?: number, windowTime?: number) - αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž’αžΆαž…αž™αž€αž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαž‡αžΆαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž‘αžΈαž˜αž½αž™αž‘αŸ†αž αŸ†αž“αŸƒαžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž“αŸƒαžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αžœαžΆαž“αžΉαž„αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ’αž›αž½αž“αžœαžΆ αž αžΎαž™αž‡αžΆαž›αžΎαž€αž‘αžΈαž–αžΈαžšαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”

AsyncSubject new AsyncSubject() - αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αž‡αžΆαžœαž‘αŸ αž αžΎαž™αžαž˜αŸ’αž›αŸƒαž“αžΉαž„αžαŸ’αžšαž›αž”αŸ‹αž˜αž€αžœαž·αž‰αžαŸ‚αž–αŸαž›αž”αŸ†αž–αŸαž‰αŸ” αž˜αžΆαž“β€‹αžαŸ‚β€‹αžαž˜αŸ’αž›αŸƒβ€‹αž…αž»αž„αž€αŸ’αžšαŸ„αž™β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž•αŸ’αžŸαžΆαž™β€‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡β€‹αž“αžΉαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžαŸ’αžšαž‘αž”αŸ‹β€‹αž˜αž€β€‹αžœαž·αž‰αŸ”

WebSocketSubject new WebSocketSubject(urlConfigOrSource: string | WebSocketSubjectConfig<T> | Observable<T>, destination?: Observer<T>) - αž―αž€αžŸαžΆαžšαž“αŸ…αžŸαŸ’αž„αŸ€αž˜αž’αŸ†αž–αžΈαž‚αžΆαžαŸ‹ αž αžΎαž™αžαŸ’αž‰αž»αŸ†αžƒαžΎαž‰αž‚αžΆαžαŸ‹αž‡αžΆαž›αžΎαž€αžŠαŸ†αž”αžΌαž„αŸ” αž”αžΎβ€‹αž“αžšαžŽαžΆβ€‹αžŠαžΉαž„β€‹αžαžΆβ€‹αž‚αžΆαžαŸ‹β€‹αž’αŸ’αžœαžΎβ€‹αž’αŸ’αžœαžΈβ€‹αž“αŸ„αŸ‡ αžŸαžΌαž˜β€‹αžŸαžšαžŸαŸαžšβ€‹αž˜αž€ αž™αžΎαž„β€‹αž“αžΉαž„β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αžœαžΆαŸ”

αž—αžœαŸ” αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹, αž™αžΎαž„αž”αžΆαž“αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž“αŸ…αžαŸ’αž„αŸƒαž“αŸαŸ‡αŸ” αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαž–αŸαžαŸŒαž˜αžΆαž“αž“αŸαŸ‡αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž’αžΆαž“αž”αž‰αŸ’αž‡αžΈαž―αž€αžŸαžΆαžšαž™αŸ„αž„αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž‘αžΆαŸ†αž„αž–αŸαžαŸŒαž˜αžΆαž“αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαŸ”

αž–αž”αŸ’αžšαž™αŸ„αž‡αž“αŸ

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹