á°áá ááá˝ááᢠáŚááááľáľáŞ á°ááá á áááááľ ááᢠáĽáá áłááá á áŞá áá˛á ááŽááŤááá áá áĽá¨áľ á áľá°ááá áá áᣠáĽááŤá á á፠áľááŞááľ áľá á°ááłáłáááľ á°ááᏠáá áᢠáᏠáá áá á˝áá áá ááá áĽááááá.
áááá ááá á¨ááááŤá˝á á ááľ áá ááá˘áŤ ááľá¨á á ááĽáᢠáľááá á áľáááá˝ áĽááááᥠááá áĽá áá¨á áááľá áá¸á?
ááá ááĽá¨ áááŽáš á âá áá¨á¨áťáŁ á ááááŞáŤ ááŞâ LIFO áá á¨áľ á¨á°áá áľáĽáľáĽ ááá˘
ááłá á á áá á¨áłá ááá ("ááááŞáŤ ááľáĽ ᣠááááŞáŤ áá" FIFO) ááĽá¨ áááŽáš á¨á°áááľ áľáĽáľáĽ ááá˘
áĽáşáŁ áĽáááĽáá˘
á፠áľááŞááľ áŁá á ááľ áá á¨ááŽááŤá á ááŁáĽ ááá ááᢠáá áááľ á ááľ á¨á áááá áá áĽáť áĽá á ááľ ááá áŤáá á°ááŁáŤáľ áááá¸á á¨áá°ááá áľ ááᢠáľááá á፠áľááŞááľ á á ááľ áá á ááľ áŚááŹá˝á áĽáť áá á¨áá°áŤá áŁááá˝ áŚááŹá˝áá˝ á°áá áĽáľáŞá አáľá¨áľ á°áŤá¸áá áá áĽááá˘
á¨áĽáŞ ááá á ááá á áááá áĽá áŁááá áľ ááŽááŤá ááľáĽ áľááá áŚáł áá¨áá á¨ááááἠá¨áá¨á ááá á ááᢠáá° á°ááŁá áááá á¨ááŁá ááá˘áŤáá áá° ááá á ááľ áĽááááááᢠá¨á ááľ á°ááŁá áľááááľ á¨áá°ááá ááĽá¨ ááá á¨ááá ááľáĽ áĽáááŁáá áĽá áá á á°ááŁá á¨á¨áľ áĽáá°á áŤá áĽáá¨ááłááᢠááá ááľá¨á á¨áá˝áá ፠áĽáť ááᢠáĽá á áá á áŁá á áľá°áłá˝ áĽáŤá. áłá˛áŤ áĽáá´áľ áá á°ááłáłáááľ á ááŤáľááŞááľ á¨áá°áŤá?
áĽáá°áá á¨ááá á á°á¨á᪠á áłážá˝ WebAPI á¨ááŁáá áá áááľáŤáľ áአáá¨á á áá¸áᢠá¨áá áá¨á á°ááŁáŤáľ á á á°á á°á¨á°á á¨áá¨ááááľ ááá áá á áá á¨á°áŁáŤ á áá áĽáť ááᢠá¨á፠á áá áĽáť á¨áá¨áá áá áááľáŤá áá° ááá áá ááááŁá. á á áá áá á˘áŤááľ á ááľ ááĽá¨ ááá ááá áá áŤáᣠáá° ááá ááľáĽ áááŁáľ á áá˝ááᢠá áá ááááŤáľ áĽáť á°ááŁáŤáąá á áá ááĽá፠ááĽáŤáľ á áá ááľáĽ áľááá á áá°áá ááááŤáąá á°ááŁáŠ áá á˛áá á¨á°áá áá° ááá ááľá¨áľ á áá˝ááá˘
áĽáľá˛ á¨áá¨á°ááá ááłá áĽáááá¨áľ áĽá á°á¨á á á°á¨á áĽáááá áľá˘ á áľáááą ááľáĽ áá áĽáá°ááá áá áĽáá.
console.log('Hi');
setTimeout(function cb1() {
console.log('cb1');
}, 5000);
console.log('Bye');
1) áĽáľáŤáá ááá áĽá¨á°á¨á°á° á áá°áá. á¨á áłáš áŽááśá áášá ááᣠá¨áĽáŞ ááá áŁáś ááá˘
2) á¨ááŤá á¨áľáĽáá áŽááśá.áá('Hi') áá° áĽáŞ ááá á°á¨ááŻáá˘
3) á°áá¸á
4) á¨á፠console.log ('Hi') á¨áĽáŞ ááá ááááłá.
5) á áá áá° setTimeout(á°ááŁá cb1() {⌠}) áľááá áĽáááľá˘ áá° áĽáŞ ááá á°á¨ááŻáá˘
6) ᨠsetTimeout(á°ááŁá cb1() {⌠}) áľááá á°áá ááᢠá áłáš á¨áľá á¤áá á á áŤá á¨áá á°ááľ ááŁáŞ áááĽáŤáᢠáá áŤá áŤá¨ááááá˘
7) ᨠsetTimeout(á°ááŁá cb1() {⌠}) áľáĽáá áľáŤáá á á áá á á¨áĽáŞ ááá á°áááˇáá˘
8) á¨áŽááśá.áá('áŁá') áľááá áá° áĽáŞ ááá á°á¨ááŻáá˘
9) á¨áŽááśá.áá('áŁá') áľááá á°áá ááá˘
10) á¨áľáĽáá áŽááśá.áá('áŁá') á¨áĽáŞ ááá á°áááˇáá˘
11) á˘áŤááľ 5000ms áŤáá á áá á¨á°ááľ ááŁáŞá áŤá áá áĽá cb1 áááś áĽáŞ áá° áááś áĽáŞ áá¨á áŤáľáááŁáá˘
12) á¨ááľá°áľ loop á°ááŁá cb1á á¨áááľ áĽáŞ áá¨á áááľáłá áĽá áá° áĽáŞ ááá áááááá˘
13) ᨠcb1 á°ááŁá á°ááá áĽá áŽááśáśá.log ('cb1') áá° á¨áĽáŞ ááá áá¨ááŤáá˘
14) á¨áŽááśá.áá('cb1') áľááá á°áá ááá˘
15) á¨áľáĽáá áŽááśá.áá('cb1') á¨áĽáŞ ááá á°áááˇáá˘
16) á°ááŁá cb1 á¨áĽáŞ ááá á°áááˇáá˘
á áłáááááľ ááľáĽ á ááľ ááłá áĽáááá¨áľáĄ-
á°á áᣠá°ááłáłáááľ á ááŤáľááŞááľ áĽáá´áľ áĽáá°áá°áá á á°áááá°ááᢠá áá áľá á áá°ááłá°á áŽáľ áááá° ááἠá á áአáĽáááááá˘
áŤáá°ááłá°á áŽáľ áááá° áááĽá˘
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);
})
})
})
})
})
});
á ááŤáľááŞááľ áĽáá°ááááá áŤáá°ááłá°á ááŽááŤááá áá ፠á¨áá˝áá á á°ááŁáŽá˝ áĽáť ááᢠáĽáá° ááááá á°áááá áá° ááá˝ á°ááŁáŤáľ áá°ááá áá˝áá. áááś áĽáŞ á¨á°áááąáľ á áá ááááľ ááᢠáĽá áá° ááá ᣠáá ááľ áĽá ááá áĽáľáŞáá¨á áľá¨áľ á áŞá ᣠá áľá°áłá˝ áĽá áááľ ááᢠááá? á á ááá áááĄ-
- á¨áŽáą ááľáĽáľáĽááľ áĽáŤá°á á˛ááľ ááŽáááą á ááĽááľ áá° ááá˝ áŤááá á ááŤáł áááá˝ - "á¨áááś áĽáŞ á˛áŚá" ááááŁá.
- á¨áľá á°áľ á áŤáŤá á ááá ááłáá áá˝áá.
- ááááŤáá˝á á ááááľ ááááľ á áá˝ááá˘
á¨á°áľá áá á áááŁáą áááłá ââáľáá˝ á¨á°áťá ááá.
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.ááá áłáááá˘
- á¨áááá áŤáá°ááłá°ááá á á á˛áá/á áá áŁá á áááłáľ áĽáá˝ááá
á¨á°áľáá áá áá ááľá ááᢠáááłá, áá áŞáłá, á á¨á Ꭰáłáá¨ááŠ, áá°á¨á á áá˝áá, áĽá á¨ááá á áá, á¨á ááľ áĽá´áľ áá áá°áŤá.
á°á áᣠáĽáá áŤáá˝áá ááá˝ á°áŞ ááŽááŤáá˝á áĽá¨áá¨áĽá ááᢠá°áááá? á°á áᣠáĽáŠá áááᣠá ááłááľ á áááá˝á ááááááᣠá áĽááŽá áááá°áľ áĽá á¨á áá áááá ἠááááľ áľá˝ááá ᢠáĽáá áĽááĽáááá˘
ááá˝ á°áŞ ááŽááŤáááâ- á áá¨á áá°áśá˝ áĽá á áááŚá˝ áľáááľ áá áŤá°áŽá¨ á¨ááŽááŤá á ááŁáĽ áááłá˘ á¨ááἠáĽá¨áľ áá áĽáá°áá á áá áĽáá áĽáááááá˘
// ĐОНŃŃаоП ŃŃŃĐťĐşŃ Đ˝Đ° ŃНоПонŃ
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)
)
áá°áľâááᥠááááĄá ááŤááááľ á¨áá˝á á áá á¨á°á°á¨á°á¨ á¨ááἠáľááľá ááᢠá áá áá ááľ á°ááŁá á á°ááŤáŠ á¨áŽáą áááá˝ ááľáĽ áĽá ááľá°áśá˝á ááľááłáľ á¨ááŤáľáááááľá áŽáľ áááá áá áŤá á ááš áĽáá°ááá á áľáĄáľá˘ á ááá ááĽá¨áą á°áá áááľ áĽáááááŁáá áĽá áááŚá˝ á˛á¨á°áą áááá¨ááᢠáĽá ᨠRxJs á¤á°-áá˝áááľ áá áá ááľá¨á áá˝ááá˘
RxJS ááłáŠ á¨áá˝á á á°á á°á¨á°áá˝á á áá áá á¨á°ááłá°á áĽá ááľá°áľ-á°áŽá ááŽááŤáá˝ áá á áĽáŽ á¨áá°áŤ á¤á°-áá˝áááľ ááᢠá¤á° ááá ááą áááá á áááľ áŤáááŁá á¨ááłááá ááŤáł á¨áłáľ ááááśá˝ (áłáá˘áá˝áŁ ááá ááĽáŽá˝áŁ ááá° ááłáŽá˝) áĽá á¨ááľá°áśá˝ áá áááľáŤáľ áŚááŹá°áŽá˝ áĽáá° áľáĽáľáŚá˝ (áŤááłáŁ ááŁáŞáŤáŁ ááááľáŁ áĽáŤááłááą áĽá á°ááłáłá á¨ááŤáľááŞááľ á áŹá)á˘
á¨áá á á¤á°-áá˝áááľ áá°á¨áłá á áá°-ááłáŚá˝ áĽáá¨áłá˘
áłáá˘áŁ áłáá˘áŁ á ááá
á¨ááłá á¨ááááŞáŤá á¨áá á¨áľ ááááľ áá á¨ááááá¨á°áᢠáá ááá ᨠRxJs á á°ááŁá á áá á áŤá áááᢠá¨á°áá áááľ ááááá˘áŤ áá´á ááá áá ááááἠá¨áá˝á á¨ááłá áĽá¨áľ áá á¨á°áŤáŤá ááá˘
áłáᢠááááá˝á áááá á á¨áłáľ áá´á áá°ááĽáŤá ᣠá¨ááŁááľá˘ á°áááŤá˝. áá ááľ áłáᢠá¨áĽá´áśá˝ ááá ááŁáá áŁááĽááľáľáľáŞ. áľááľáᣠá°á°áááᣠá¨áľá áśáŹáľáŁ á¨áá á áááľ ááľá°áľáŁ ááá° ááá áá˝ááᢠáľááá áłáᢠáááľ á á ááŤá˝ áĽá áłáᢠááŤá¨á á᪠áá áááľ áĽáá˝áááá˘
ááłáŠ á¨áá˝á áśáľáľ á áááľ áłáᢠááľá°áśá˝á áŤáľá°áááłáá˘
- ááŁá - á á˛áľ áááĽ
- áľá á°áľ - á á°áᨠááááŤáľ á á°á á°á¨á°á á¨á°áá¨á áľá á°áľá˘ áá ááľá°áľ á¨á á°á á°á¨á°á áá¨á¨áťáá áŤááááłáá˘
- á¨á°áá - áľá á á°á á°á¨á°á áá¨á¨áť ááááľ. áá áááľ ááá á°á¨á᪠á á˛áľ ááἠá áááá
ááłáŤ áĽáááĄ-
ááááŞáŤ áá áĽá´áśášá 1, 2, 3 áĽá ᨠ1 á°á¨ááľ á áá áĽááľáŹáłáá. 4 áĽááááá áĽá ááá˝áá áĽáá¨ááłáá.
áŽá áĽá áá°áĽ
áĽá á¨á፠áľá áĽáą á¨ááťá ááá áááá á¨á áá á áľá°áłá˝ áĽáá°áá á°ááááĽáŠá˘ đ
á¨á°áá áááľ ááááŁ
ááĽá¨áľ áľáááááĽáŁ á á˛áľ ááá áĽáááĽáŤáá á¨á°áá áááľ ááááŁ, áá á á áá´ á¨á°áá áááľ áááᣠá¨áááŁáľ á ááŤá áá°á áá á¨á°áá áááľ áááᣠáááĄ. áá´áá á áá áá á¨á°áá áááľ ááááŁáá˝á áá§á°á áĽáá˝ááá á áá. á°á áᣠá áá áá ááŽá˝á áá¨ááá ááťáá˝á ááááŤáłá ááᢠááľáááľ. á¨áá¨á áĽá á¨ááľáááľ áá´áá˝ á¨á°áᨠá¨á°áá áááľ ááááŁá áĽáá° ááĽá áľ ááá ááᢠá¨á°áá áááľ áááᣠáľááᣠá¨ááá á¨á áťááľ ááááŁáá˝ á¨á°áá áááľ áááᣠááá¨á áá´á áĽáá°áá áŠáľ áá á¨á°áá áááľ áááᣠáĽáá°áááᣠááľá°áá áĽáááááᢠááĽáá áľ.
á¨á á¨áśá˝ ááááśá˝
áá
áááá
ááŽá˛áŠá°á á¨ááłá¨á áá á¨á°áá ᨠááá˘
ááŽá˛áŠá°á á¨á°áá á¨á á ááłá ááľáĽ ááá˘
áá¨áá á¨ááłáá á á ááá áá áľ áá áá°áááá
ááἠá áááᣠáá ááááŁáá˘
á¨á°áá áááľ áááᣠááááŁáľ á°á¨á᪠á áááᎠááááá
áá á áŤáą ááá¨áŁá
á¨á ááľ áĽáľá¨ áĽá áááááľ áá ááá
á¨á ááľ áá ááľ áááááľ áá ááá
ááá á¨á°áá áááľ ááááŁáá˝ á°ááłáłá áá á áá¸áá˘
á¨á°áá áááľ ááááŁáá˝ ááť áá¸á
á¨á°áá áááľ áááᣠá¨áá ááἠáá á áá˝áá
áá á˛áľ áááᣠáááá á¨áĽá¨áľ áááá˝á áĽáá°áá áŤááŁáá˘
ááłá áááľá áľáŁ á á˛áá ááľáĽ áĽááłá ááá áŤá áľáŠáľ áĽá¨áľ á ááá áááᏠááłá¨ááᢠá áľááľ á°á áľ ááŁá á¨á á á˝á áľ ááᎠáá¨áľ ááááᢠáááááá áĽá¨áľ á¨áĽáŞ áá á ááłáľá áá áᢠáľáá. ááááá á°áá á¨ááááŞáŤá áĽáľá¨ áá¨á¨áťá á¨áááľ áá˝á áá¨áťáá áŤáłááŁáᣠááá áá á¨á°áá áááľ áááᣠá áááŁáľ ááááľ áá˝ááá˘
áááłá á á¨áśá˝ á¨ááŁááľá áĽááłá áἠáááľ áĽááááá (áá á á¨áá°á ááş á áŁá á áá á áá áĽá á áá áá á á¨á°áŚá˝ ááľáĽ áĽáť áá áŤáá áá) - áá á¨áááá á á¨áľ áá° áá áá á¨ááá¨á á á¨áľ ááᢠáĽáŤáá á¨áááłá - ââá¨áľ áĽáá°áá ááá áľ)) á¨á°ááŁá á ááľ ááłá áĽá°áŁáá.
á¨á áááá áá áĽá¨á°áŤá ááᢠáĽáą 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 ááľáĽ á¨áááąáľá ááľá°áśá˝ ááááŁá á áá¨áłá. á áŁá á°ááłá á¨áááľá áĽááśá˝ áĽáááá¨áłáá, áĽá áľá áŚááŹá°áŽá˝ á°á¨á᪠áá¨á á áá á áá áá¨ááá˝ ááľáĽ áŁá á áááá˝ ááľáĽ áááá.
áŚááŹá°áŽá˝ - á¨
á á¨áłáľ áŚááŹá°á áĽááááᢠá ááá áĽá´áľ áá á¨á°áá°á¨á° áłáᢠáááĽáŤáá˘
áŚááŹá°áŽá˝-ááŁáŞáŤ
á¨ááŁáŞáŤ áŚááŹá°á, áľá áĽáá°ááŤáááá°á, á¨áĽá¨áľ ááááľá áŤáŁáŤá. áŚááŹá°áŠ áĽáááľá á¨ááá°áŁ á¨ááŤá á¨á áá ááááá˘
áŚááŹá°áŽá˝ - ááá°áą
ááá°áľ - á¨áááááŤáá˝á ááĽá áá áááľáłá, á¨á፠á áá áĽá¨áą áŤá áá.
áŚááŹá°áŽá˝-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)
);
áŚááŹá°áŽá˝-á¨áááľáąáľ áá
áá¸áľ áĽáľáŞáááľ áľá¨áľ áĽá´áśá˝á áŤááŁáᣠá¨á፠á¨áአá°áá áááľ áááᣠáááŁáá˘
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 )
);
áŚááŹá°áŽá˝-á¨á áἠááá áŤáŁááŠ
á¨á°áŁáᨠáŚááŹá°á á¨á áἠááá á¨á°áľá áá á á°áá°á ááአáááłá°ááᢠá ááŤáł áĽá¨áśá˝á áá° á ááľ áŤáŁááŤáᢠáĽáŤááłááą áá á˘áŤááľ á ááľ áááľ á¨á°áŤ á áá á¨á áἠáááášá áĽá´áśá˝ áĽáá° áľááľá áĽáááááᢠá á°á¨ááŞáᣠá¨á°áŁáአá á¨áśá˝ ááááá áááľ á ááᣠá áłá˛áľ áĽá´áśá˝á áá°áŁáá˘
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));
áŚááŹá°áŽá˝-áá
áá - á¨áĽáŤááłááą áĽá¨áľ ááá áá áĽáá áĽá á áĽááá áĽá´áśá˝ áá á áááľá¨áľ áľááľá ááá°ááłáᢠáĽá´áą á¨ááááá áá á¨áááᣠá¨áá, áĄáľá á ááá áá.
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)
);
áŚááŹá°áŽá˝ - áááŤáľ ᣠááł áŤáľáá
á¨á§á᧠á á áŞá á¨áááŽá˝ ááłáśá˝á áááľá á á á°á á°á¨á°á áá á°á˝áá á¨ááŤáłáľáŠ ááá¸ááá áľáááśá˝ áĽáá˛áŤá°áá ááá áľáááłá.
á¨á áá˛áŽá áááá፠áŚááŹá°á áááá áĽá¨áľ áá° áá áĽá¨áľ áááá á áá˝ááá˘
áŚááŹá°áŽá˝ á°á¨ááááá. áá° ááá° ááłá áĽáááľá˘
áŽá áĽá áá°áĽ
áĽá á¨á፠áťá ááá áŁáľ ááľáŠá. áĽááá ááłááá˝ á°áááá đ
ááá° ááłá á¤á°á°áĽ
á¨ááá° ááłá á¤á°á°áĽ á¨áá áá áá ááłá ááᢠáĽááá áááá˝ á á ááľ áá áĽáá° áłáᢠáĽá á°áááŤá˝ ááá á¨ááŤáááá áľá á ááááľ áá¸áᢠááá° ááłáŠ áľáŠáľ áĽá¨áľ áľááá á¨á°áá áááľ áááᣠáááŁáľ á áá áľá˘ áľá ááááš áá´áá˝ á¨á°ááááá, áĽááá áá¸á.
- ááŁá - á á˛áľ ááἠáá° áĽá¨áą ááľá°ááá
- áľá á°áľ - áľá á°áľ áĽá áá ááá¨áĽ
- á¨á°á ááá - áá áá¨á¨áť
- ááááᥠ- ááĽá¨áľ áááááĄ
- á¨á°áá áááľ áááᣠááᥠ- á¨áĽá¨áą á°áá áááľ áááĄ
- áĽáá° áłáᢠ- áá° á°áááŤá˝ááľ ááááĽ
- áá áááŁáľ - áá° áá áŞáłá ááááŁá
4 5 ááááľ ááááśá˝á áááľáĄ.
áŽá áĽá áá°áĽ
á áĽá¨áą áá 4 á ááŠáŁ áá á ááľ á°á¨á᪠á¨ááŠá áľá˘ áአáĽá á°áአáĽáá°ááŁáá.
ááá ááá° ááłá new Subject()
- á áŁá ááá á¨áľáá
ááľ ááááśá˝á˘ áŤá áááŞáŤáá˝ á¨á°áá á¨á˘ á¨á°áá áááľ ááááŁá á áá á¨ááĄáľá áĽá´áśá˝ áŤáááá˘
á¨áŁá
᪠ááá° ááłá new BehaviorSubject( defaultData<T> )
- á áĽá á áľá°áŤá¨áľ á áŁá á¨á°ááá°á á¨ááĽá° ááłá á áááľ. áá¤áľ ááŁáŞáá áá áááľáłáᢠáá°áá áááľ á˛áááᥠá¨áá°ááááá á¨áá¨á¨áťáá áĽáľá ááἠáááá áŤáľáááŁá. áá
ááá á¨áĽá¨áąá á¨á ááá áá á¨ááááľ á áá á¨áĽá´áľ áá´á á ááá˘
ááá° ááłá áĽáá°áá á áŤááľá˘ new ReplaySubject(bufferSize?: number, windowTime?: number)
- áĽáá° á ááŤá ᣠá áŤáą ááľáĽ á¨ááŤá¨áá˝áá á¨áĽá´áśá˝ ááľ áá á áĽá áááá°á áá áááŚá˝ á¨ááááááá áĽáá° ááááŞáŤá áááá áááľáľ áá˝ááá˘
á°ááłáłáááľ áŤáá ááá° ááłá new AsyncSubject()
- áá°áá áááľ á˛áááᥠááá ááá á áá¨á°áľá, áĽá áĽá´áą á˛á ááá
áĽáť ááááłá. á¨áĽá¨áą á¨áá¨á¨áť áá áĽáť ááááłáá˘
WebSocket ááá° ááłá new WebSocketSubject(urlConfigOrSource: string | WebSocketSubjectConfig<T> | Observable<T>, destination?: Observer<T>)
- á°ááą áľááĽáą áἠááá áĽá áĽá áŤá´ áááááŞáŤ áá á á¨ááľá˘ á¨áá áŤáá áá áŤááá, áá˝áá, áĽáá¨ááŤáá.
áá. áĽááá˛á áᏠááááŤáľ á¨áááŠáľá áá á°áááá°ááᢠáá áá¨á á áá áá á áĽáá á°áľá áĽáá°ááááᢠá áá áá¨á á ááá áľá ááľáĽ á¨áľá-á˝áá ááááá á áŤáľá ááá ἠáá˝áá.
á áἠáá¨á
á¨áĽá¨áľ á ááá JS áĽáá´áľ áĽáá°áá°áŤáĄ áľá áá°áŠ á á ááá áĽááłáŁ á¨áŠáŤ áá áľááśá˝áŁ á¨áĽáŞ ááá JS áĽáá´áľ áĽáá°áá°áŤáĄ á¨ááľá°áľ ááᣠá á˛áá áĽá áŽáľáá á á sync/á áá áŁá á á¨ááťáťááŁá¸á á ááľáľ ááááśá˝ á¨ááľá°áľ Loop á JavaSript ááľáĽ áĽáá´áľ áĽáá°áá°áŤ áŤáá°ááłá°á ááŤáľááŞááľ áááá° ááἠRxJS áááľá áá áĽá ááá áľááĽáą ááá á áá ááá˘
ᨠRxJS á°ááŁáŤá áá°áá áŞáŤ RxJS áłáá˘áá˝ á áἠáľáá á - áá°áááŤážá˝ ááá á áĽá ááááἠRXJS: áá áĽá áááá áłáá˘áá˝ áááὠᣠáłáᢠáááá á á°ááŁáŤáľá˘ áŚááŹá°áŽá˝. RxJS áŚááŹá°áŽá˝ á ááłá á¨á¤áá á áááá á RxJS ááľáĽ á¨ááá° ááłá áĽá á¨áá á°ááł ááŠááśá˝
ááá: hab.com