ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Aloha kākou. E pili ana iā Omelnitsky Sergey. ʻAʻole i lōʻihi ma mua, ua hoʻokipa au i kahi kahawai ma ka hoʻolālā reactive, kahi aʻu i kamaʻilio ai e pili ana i ka asynchrony ma JavaScript. I kēia lā makemake wau e hōʻuluʻulu i kēia mea.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Akā ma mua o ka hoʻomaka ʻana i ka mea nui, pono mākou e hana i kahi hoʻolauna. No laila e hoʻomaka kākou me nā wehewehe: he aha ka stack a me ka queue?

Hoʻopaʻa he hōʻiliʻili nona nā mea i kiʻi ʻia ma ke kumu LIFO "ma hope, puka mua".

Queue he hōʻiliʻili nona nā mea i loaʻa e like me ke kumu ("first in, first out" FIFO

ʻAe, e hoʻomau kāua.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

ʻO JavaScript kahi ʻōlelo hoʻonohonoho hoʻokahi. ʻO ia hoʻi, hoʻokahi wale nō kaula o ka hoʻokō ʻana a hoʻokahi pūʻulu kahi e hoʻonohonoho ʻia ai nā hana no ka hoʻokō. No laila, hiki i ka JavaScript ke hana i hoʻokahi hana i ka manawa, aʻo nā hana ʻē aʻe e kali i ko lākou manawa ma ka waihona a hiki i ke kāhea ʻia ʻana.

Kāhea ahu he hoʻonohonoho ʻikepili, ma nā ʻōlelo maʻalahi, e hoʻopaʻa i ka ʻike e pili ana i kahi o ka papahana a mākou e noho nei. Inā mākou e lele i loko o kahi hana, hoʻokuʻu mākou i kona komo ʻana i luna o ka waihona. Ke hoʻi mai mākou mai kahi hana, pop mākou i ka mea kiʻekiʻe loa mai ka waihona a hoʻopau i kahi a mākou i kapa ai i kēia hana. ʻO ia wale nō ka mea hiki ke hana. A i kēia manawa he nīnau hoihoi loa. Pehea e hana ai ka asynchrony ma JavasScript?

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

ʻO kaʻoiaʻiʻo, ma waho aʻe o ka hoʻopaʻa ʻana, loaʻa i nā mākaʻikaʻi kahi laina kūikawā no ka hana ʻana me ka mea i kapa ʻia ʻo WebAPI. E hoʻokō pono ʻia nā hana mai kēia pila ma hope o ka hoʻomaʻemaʻe ʻia ʻana o ka waihona. Ma hope wale nō e hoʻonoho ʻia ai lākou mai ka pila ma luna o ka waihona no ka hoʻokō. Inā loaʻa hoʻokahi mea ma ka waihona i kēia manawa, a laila ʻaʻole hiki iā lākou ke komo i ka waihona. Ma muli wale nō o kēia, ʻaʻole pololei ke kāhea ʻana i nā hana ma ka manawa manawa, ʻoiai ʻaʻole hiki ke hele mai ka hana mai ka pila a hiki i ka waihona ʻoiai ua piha.

E nānā kākou i kēia hiʻohiʻona a e hele kākou i kēlā me kēia pae. E ʻike pū kākou i ka hana ʻana i ka ʻōnaehana.

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

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

1) ʻAʻohe mea i kēia manawa. Maʻemaʻe ka polokalamu kele pūnaewele, ʻaʻohe kaʻa o ka waihona kelepona.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

2) A laila hoʻohui ʻia ke kauoha console.log('Hi') i ka waihona kelepona.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

3) A ua hookoia

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

4) A laila wehe ʻia ka console.log('Hi') mai ka waihona kelepona.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

5) ʻĀnō e neʻe kāua i ke kauoha setTimeout(hana cb1() {… }) kauoha. Hoʻohui ʻia i ka waihona kelepona.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

6) Hoʻokō ʻia ke kauoha setTimeout(hana cb1() {…}). Hoʻokumu ka polokalamu kele pūnaewele i kahi manawa i ʻāpana o ka API Pūnaewele. E hana ana ia i ka helu iho.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

7) Ua hoʻopau ke kauoha setTimeout(hana cb1() {… }) i kāna hana a ua wehe ʻia mai ka waihona kelepona.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

8) Hoʻohui ʻia ke kauoha console.log('Bye') i ka waihona kelepona.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

9) Hoʻokō ʻia ke kauoha console.log('Bye').

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

10) Wehe ʻia ke kauoha console.log('Bye') mai ka waihona kelepona.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

11) Ma hope o ka hala ʻana o 5000ms, pau ka manawa a hoʻokomo i ka callback cb1 i loko o ka pila callback.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

12) Lawe ka loop loop i ka hana cb1 mai ka queue callback a hoʻokuʻu iā ia ma luna o ka waihona kelepona.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

13) Hoʻokō ʻia ka hana cb1 a hoʻohui i ka console.log('cb1') i ka waihona kelepona.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

14) Hoʻokō ʻia ke kauoha console.log('cb1').

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

15) Wehe ʻia ke kauoha console.log('cb1') mai ka waihona kelepona.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

16) Wehe ʻia ka hana cb1 mai ka waihona kelepona.

E nānā kākou i kekahi laʻana i ka dynamics:

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

ʻAe, ua nānā mākou i ka hoʻokō ʻana o asynchrony ma JavaScript. I kēia manawa e kamaʻilio pōkole e pili ana i ka ulu ʻana o ka code asynchronous.

ʻO ka ulu ʻana o ke code asynchronous.

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

ʻO ka polokalamu Asynchronous e like me kā mākou i ʻike ai ma JavaScript hiki ke hana wale ʻia me nā hana. Hiki ke hāʻawi ʻia e like me nā ʻano ʻē aʻe i nā hana ʻē aʻe. ʻO kēia ke ʻano i hānau ʻia ai nā callbacks. A he ʻoluʻolu, leʻaleʻa a me ka manaʻo, a hiki i ka wā e lilo ai ia i ke kaumaha, melancholy a me ke kaumaha. No ke aha mai? ʻAe, maʻalahi:

  • Ke ulu nei ka paʻakikī o ke code, huli koke ka papahana i nā poloka nested lehulehu - "callback hell".
  • Hiki ke hoʻopoina i ka hana hewa.
  • ʻAʻole hiki iā ʻoe ke hoʻihoʻi i nā ʻōlelo me ka hoʻihoʻi.

Me ka hiki ʻana mai o Promise, ua ʻoi aku ka maikaʻi o ke kūlana.

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

  • Ua ʻike ʻia nā kaulahao hoʻohiki, i hoʻomaikaʻi i ka heluhelu ʻana o ke code
  • Aia kekahi ʻano kaʻawale no ka hoʻopaʻa ʻana i nā hewa
  • Hoʻohui like me Promise.all
  • Hiki iā mākou ke hoʻoponopono i ka nested asynchrony me async/kali

Akā he mau palena ko ka ʻōlelo hoʻohiki. Eia kekahi laʻana,ʻaʻole hiki ke hoʻopauʻia kahi'ōlelo hoʻohiki, me ka hulaʻole me ka pahu kani, aʻo ka mea nui loa, hana me ka waiwai hoʻokahi.

ʻAe, eia mākou e hele mālie nei i ka hoʻolālā reactive. luhi? ʻAe, ʻo ka mea maikaʻi, hiki iā ʻoe ke hele e inu i nā gull, noʻonoʻo a hoʻi hou e heluhelu hou. A e hoʻomau wau.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

ʻO ka hoʻolālā ʻana - kahi papahana hoʻolālā e pili ana i ka kahe ʻikepili a me ka hoʻolaha ʻana o nā loli. E nānā pono kākou i ke ʻano o ke kahawai ʻikepili.

// Получаем ссылку на элемент
const input = ducument.querySelector('input');

const eventsArray = [];

// Пушим каждое событие в массив eventsArray
input.addEventListener('keyup',
    event => eventsArray.push(event)
);

E noʻonoʻo kākou he kahua hoʻokomo. Hoʻokumu mākou i kahi array, a no kēlā me kēia keyup o ka hanana hoʻokomo, e mālama mākou i ka hanana i kā mākou hui. I ka manawa like, makemake wau e hoʻomaopopo i kā mākou ʻano i hoʻonohonoho ʻia e ka manawa, ʻo ia hoʻi. ʻoi aku ka nui o ka helu o nā hanana hope ma mua o ka helu o nā mea ma mua. ʻO ia ʻano ʻano he ʻano hoʻohālike hoʻoheheʻe ʻikepili maʻalahi, akā ʻaʻole ia he kahe. I mea e kapa ʻia ai kēia ʻano he kahawai, pono e hiki iā ia ke hoʻomaopopo i ka poʻe kākau inoa ua hiki mai ka ʻikepili hou i loko. Pēlā mākou e hele ai i ka wehewehe o ke kahe.

kahawai ʻikepili

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

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

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Kahe he ʻano ʻikepili i hoʻokaʻawale ʻia e ka manawa e hōʻike ai ua loli ka ʻikepili. E noʻonoʻo ʻoe i ka maʻalahi o ke kākau ʻana i ke code e pono ai ʻoe e hoʻoulu i nā hanana i nā ʻāpana like ʻole o ke code no ka hana hoʻokahi. Kākoʻo wale mākou i ke kahawai a haʻi iā mākou i ka wā e loli ai. A hiki i ka waihona RxJs ke hana i kēia.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

RxJS he hale waihona puke no ka hana ʻana me nā papahana asynchronous a me nā hanana e hoʻohana ana i nā kaʻina ʻike. Hāʻawi ka waihona i ke ʻano nui Nānā ʻia, kekahi mau ʻano kōkua (Nā mea nānā, nā mea hoʻonohonoho, nā kumuhana) a me nā mea hana no ka hana ʻana me nā hanana e like me nā hōʻiliʻili (palapala ʻāina, kānana, hōʻemi, kēlā me kēia a me nā mea like mai JavaScript Array).

E hoʻomaopopo kākou i nā manaʻo kumu o kēia waihona.

Nānā, Nānā, Mea Hana

ʻO Observable ke ʻano kumu mua a mākou e nānā ai. Aia kēia papa i ka hapa nui o ka hoʻokō RxJs. Hoʻopili ʻia me kahi kahawai ʻike ʻia, hiki ke hoʻopaʻa inoa ʻia me ka hoʻohana ʻana i ke ʻano kau inoa.

Hoʻohana ʻo Observable i kahi mīkini kōkua no ka hana ʻana i nā mea hou, ka mea i kapa ʻia kilo. Ua kapa ʻia ke kumu o nā waiwai no kahi Observer ka hoʻohua. Hiki iā ia ke ʻano, he mea hoʻololi, kahi kumu pūnaewele, kekahi ʻano hanana, etc. No laila hiki iā mākou ke ʻōlelo ʻo observable kahi alakaʻi ma waena o Producer a me Observer.

Mālama ʻo Observable i ʻekolu ʻano hanana Observer:

  • aʻe - ʻikepili hou
  • hewa - he hewa inā hoʻopau ke kaʻina ma muli o kahi ʻokoʻa. ʻO kēia hanana pū kekahi i ka hopena o ke kaʻina.
  • piha - he hōʻailona e pili ana i ka hopena o ke kaʻina. ʻO ia hoʻi, ʻaʻohe ʻikepili hou

E ʻike kākou i kahi demo:

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

I ka hoʻomaka e hana mākou i nā waiwai 1, 2, 3, a ma hope o 1 kekona. loaʻa iā mākou 4 a hoʻopau i kā mākou pae.

Noonoo leo nui

A laila ʻike wau he ʻoi aku ka hoihoi o ka haʻi ʻana ma mua o ke kākau ʻana no ia mea. 😀

Hoʻomoe

Ke kau inoa mākou i kahi kahawai, hana mākou i kahi papa hou palapala inoa, e hāʻawi iā mākou i ke koho e wehe i ke ʻano me ke ʻano hoʻokaʻawale. Hiki iā mākou ke hui pū me ka hoʻohana ʻana i ke ʻano hui. Maikaʻi, hiki iā mākou ke wehe i nā pae me ka hoʻohana ʻana lawe. E ʻae nā ʻano hoʻohui a wehe i kahi kau inoa ʻokoʻa ma ke ʻano he hoʻokomo. Makemake au e hoʻomaopopo i ka wā e wehe ai mākou, wehe mākou i nā inoa inoa o nā keiki me he mea lā ua kapa ʻia lākou i ke ʻano unsubscribe. Hele i mua.

Nā ʻano kahawai

anal
ANUANU

Hana ʻia ka mea hana ma waho o ka ʻike
Hana ʻia ka mea hana i loko o ka nānā ʻana

Hoʻoholo ʻia ka ʻikepili i ka manawa i hana ʻia ai ka mea nānā
Hāʻawi ʻia ka ʻikepili i ka manawa o ke kau inoa.

Pono e hoʻokaʻawale i ke kau inoa
Hoʻopau ke kaula iā ia iho

Hoʻohana i ka pilina hoʻokahi a me ka nui
Hoʻohana i ka pilina hoʻokahi

Ua like ka waiwai o na inoa inoa a pau
He kūʻokoʻa ke kau inoa

Hiki ke nalowale ʻikepili inā ʻaʻohe kau inoa
Hoʻopuka hou i nā waiwai kahawai no ke kau inoa hou

No ka hāʻawiʻana i kahi hoʻohālike, e noʻonoʻo wau i kahi kahawai wela e like me ke kiʻiʻoniʻoni i loko o ka hale kiʻiʻoniʻoni. I ka manawa hea ʻoe i hele mai ai, mai kēlā manawa i hoʻomaka ai ʻoe e nānā. E hoʻohālikelike au i kahi kahawai anu me kahi kelepona i kēlā mau. kākoʻo. Hoʻolohe kēlā me kēia mea kelepona i ka mīkini pane hoʻopaʻa ʻana mai ka hoʻomaka a i ka pau ʻana, akā hiki iā ʻoe ke kau i luna me ka wehe ʻole ʻana.

Makemake au e hoʻomaopopo he mau kahawai pumehana nō hoʻi (ua ʻike pinepine au i ka wehewehe ʻana a ma nā kaiāulu ʻē wale nō) - he kahawai kēia e hoʻololi ʻia mai ke kahawai anu i kahi wai wela. Ke kū nei ka nīnau - kahi e hoʻohana ai)) E hāʻawi wau i kahi hiʻohiʻona mai ka hana.

Ke hana nei au me Angular. Hoʻohana ikaika ʻo ia i nā rxjs. No ka loaʻa ʻana o ka ʻikepili i ke kikowaena, manaʻo wau i kahi kahawai anu a hoʻohana wau i kēia kahawai i ka template me ka hoʻohana ʻana i ka asyncPipe. Inā wau e hoʻohana i kēia paipu i nā manawa he nui, a laila, e hoʻi ana i ka wehewehe ʻana i kahi kahawai anu, e noi kēlā me kēia paipu i ka ʻikepili mai ke kikowaena, he mea ʻē ka ʻōlelo ʻana i ka liʻiliʻi. A inā e hoʻololi au i kahi kahawai anu i kahi mehana, a laila e hoʻokō ʻia ka noi.

Ma keʻano laulā, paʻakikī loa ka hoʻomaopopo ʻana i ke ʻano o nā kahe no ka poʻe hoʻomaka, akā he mea nui.

ke hana

return this.http.get(`${environment.apiUrl}/${this.apiUrl}/trade_companies`)
    .pipe(
        tap(({ data }: TradeCompanyList) => this.companies$$.next(cloneDeep(data))),
        map(({ data }: TradeCompanyList) => data)
    );

Hāʻawi nā mea hana iā mākou i kahi manawa e hana ai me nā kahawai. Kōkua lākou i ka mālama ʻana i nā hanana e kahe ana i ka Observable. E noʻonoʻo mākou i ʻelua o nā mea kaulana loa, a ʻike ʻia ka ʻike hou aku e pili ana i nā mea hoʻohana ma nā loulou i ka ʻike pono.

Nā mea hana-o

E hoʻomaka kākou me ka mea hoʻohana kōkua o. Hoʻokumu ia i kahi Observable e pili ana i kahi waiwai maʻalahi.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Mea hoʻohana-kāna

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

ʻO ka mea hoʻohana kānana, e like me ka inoa, kānana i ka hōʻailona kahawai. Inā hoʻi ka mea hoʻohana i ka ʻoiaʻiʻo, a laila lele hou ia.

Nā mea hana - lawe

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

lawe - Lawe i ka waiwai o ka helu o nā emits, a laila pau ke kahawai.

Mea hoʻohana-debounceTime

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

debounceTime - hoʻolei i nā waiwai i hāʻule i loko o ka manawa i ʻōlelo ʻia ma waena o ka ʻikepili hoʻopuka - ma hope o ka hala ʻana o ka manawa, hoʻopuka i ka waiwai hope.

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

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Operators-takeWhile

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Hoʻopuka i nā waiwai a hiki i ka lawe ʻana i ka hoʻihoʻi hewa ʻana, a laila kāpae ʻia mai ke kaula.

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

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Mea hoʻohana-combineLatest

He ʻano like ka mea hoʻohana hui combineLatest me promise.all. Hoʻohui ia i nā kahawai he nui i hoʻokahi. Ma hope o ka hana ʻana o kēlā me kēia pae i hoʻokahi emit, loaʻa iā mākou nā waiwai hou loa mai kēlā me kēia ma ke ʻano he array. Eia hou, ma hope o kekahi emit mai nā kahawai i hui ʻia, e hāʻawi ia i nā waiwai hou.

ʻO ka hoʻolālā like ʻole ma 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));

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Mea hoʻohana-zip

Zip - kali i kahi waiwai mai kēlā me kēia kahawai a hoʻokumu i kahi ʻano ma muli o kēia mau waiwai. Inā ʻaʻole i loaʻa mai ka waiwai mai kekahi pae, a laila ʻaʻole e hoʻokumu ʻia ka hui.

ʻO ka hoʻolālā like ʻole ma 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));

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Mea hoʻohana - forkJoin

Hoʻohui pū ʻo forkJoin i nā loina, akā hoʻopuka wale ia i kahi waiwai ke pau nā loina a pau.

ʻO ka hoʻolālā like ʻole ma 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);

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Nā mea hana-palapala

Hoʻololi ka mea hoʻololi palapala palapala i ka waiwai emit i mea hou.

ʻO ka hoʻolālā like ʻole ma 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)
);

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Nā mea hana - kaʻana like, paʻi

Hāʻawi ka mea hoʻohana tap iā ʻoe e hana i nā hopena ʻaoʻao, ʻo ia hoʻi, nā hana i pili ʻole i ke kaʻina.

Hiki ke hoʻololi i ke kahawai anuanu i kahawai wela.

ʻO ka hoʻolālā like ʻole ma JavaScript (Callback, Promise, RxJs)

Hana ʻia nā mea hana. E neʻe kākou i ke kumuhana.

Noonoo leo nui

A laila hele au e inu kī. Ua luhi au i kēia mau laʻana 😀

ʻOhana kumuhana

ʻO ka ʻohana kumuhana kahi laʻana nui o nā kaula wela. ʻO kēia mau papa he ʻano hybrid e hana like me ka nānā a nānā i ka manawa like. No ka mea he kahawai wela ke kumuhana, pono ke kāpae ʻia mai. Inā mākou e kamaʻilio e pili ana i nā ala nui, a laila penei:

  • aʻe - hāʻawi i nā ʻikepili hou i ke kahawai
  • hewa - hewa a me ka hoʻopau ʻana i ke kaula
  • piha - hope o ka pae
  • kau inoa - kakau i ke kahawai
  • unsubscribe - unsubscribe from the stream
  • asObservable - hoʻololi i mea nānā
  • toPromise - hoʻololi i ʻōlelo hoʻohiki

E hoʻokaʻawale i 4 5 mau ʻano kumuhana.

Noonoo leo nui

Ua ʻōlelo wau he 4 ma ke kahawai, akā ua hoʻohui lākou i hoʻokahi. E like me ka ʻōlelo, ola a aʻo.

Kumuhana Maalahi new Subject()- nā ʻano kumuhana maʻalahi loa. Hana ʻia me ka ʻole o nā ʻāpana. Hāʻawi i nā waiwai i hiki mai ma hope o ke kau inoa.

Kūlana Kūlana new BehaviorSubject( defaultData<T> ) - i koʻu manaʻo ke ʻano maʻamau o nā kumuhana-s. Lawe ka mea hoʻokomo i ka waiwai paʻamau. E mālama mau i ka ʻikepili o ka pukana hope loa, i hoʻouna ʻia i ke kau inoa ʻana. Loaʻa i kēia papa ke ʻano waiwai waiwai e hoʻihoʻi i ka waiwai o kēia kahawai.

ReplaySubject new ReplaySubject(bufferSize?: number, windowTime?: number) - ʻO ke koho, hiki iā ia ke hoʻopaʻapaʻa mua i ka nui o ka buffer o nā waiwai e mālama ai iā ia iho, a ʻo ka lua o ka manawa e pono ai mākou i nā loli.

kumuhana async new AsyncSubject() - ʻaʻohe mea i hiki ke kau inoa, a e hoʻihoʻi ʻia ka waiwai i ka wā e pau ai. E hoʻihoʻi ʻia ka waiwai hope o ke kahawai.

WebSocketSubject new WebSocketSubject(urlConfigOrSource: string | WebSocketSubjectConfig<T> | Observable<T>, destination?: Observer<T>) - Ua hāmau ka palapala e pili ana iā ia a ʻike wau iā ia no ka manawa mua. ʻO wai ka mea ʻike i kāna hana, e kākau, e hoʻohui mākou.

Phew. ʻAe, ua noʻonoʻo mākou i nā mea a pau aʻu i makemake ai e haʻi i kēia lā. Manaʻolana ua kōkua kēia ʻike. Hiki iā ʻoe ke heluhelu i ka papa inoa o nā palapala iā ʻoe iho ma ka pā ʻIke Pono.

He kōkua anei kēia 'ike

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka