ããã«ã¡ã¯ãã¿ããªã ãªã¡ãªããããŒã»ã»ã«ã²ã€ã«é£çµ¡ããŠãã ããã å°ãåãŸã§ãç§ã¯ãªã¢ã¯ãã£ã ããã°ã©ãã³ã°ã«é¢ããã¹ããªãŒã ããã¹ããããã㧠JavaScript ã®éåæã«ã€ããŠè©±ããŸããã ä»æ¥ã¯ãã®è³æã«ã€ããŠãŸãšããŠã¿ãããšæããŸãã
ããããæ¬é¡ãå§ããåã«ãå°å
¥ãããå¿
èŠããããŸãã ããã§ã¯ãå®çŸ©ããå§ããŸããããã¹ã¿ãã¯ãšãã¥ãŒãšã¯äœã§ãã?
ã®ã¹ã¿ã㯠èŠçŽ ããåŸå
¥ãå
åºããLIFO ããŒã¹ã§ååŸãããã³ã¬ã¯ã·ã§ã³ã§ãã
åŸ
ã¡è¡å èŠçŽ ãåç (ãå
å
¥ãå
åºããFIFO) ã«åŸã£ãŠååŸãããã³ã¬ã¯ã·ã§ã³ã§ãã
ããŠãç¶ããŸãããã
JavaScript ã¯ã·ã³ã°ã«ã¹ã¬ããã®ããã°ã©ãã³ã°èšèªã§ãã ããã¯ãå®è¡ã¹ã¬ããã XNUMX ã€ãšãé¢æ°ãå®è¡ã®ããã«ãã¥ãŒã«å ¥ããããã¹ã¿ãã¯ã XNUMX ã€ã ãããããšãæå³ããŸãã ãããã£ãŠãJavaScript ã¯äžåºŠã« XNUMX ã€ã®æäœã®ã¿ãå®è¡ã§ããŸãããä»ã®æäœã¯åŒã³åºããããŸã§ã¹ã¿ãã¯äžã§é çªãåŸ ã¡ãŸãã
ã³ãŒã«ã¹ã¿ã㯠ã¯ãç°¡åã«èšãã°ãããã°ã©ã å ã®ç§ãã¡ãããå Žæã«é¢ããæ å ±ãèšé²ããããŒã¿æ§é ã§ãã é¢æ°ã«ãžã£ã³ããããšããã®ãšã³ããªãã¹ã¿ãã¯ã®äžçªäžã«ããã·ã¥ãããŸãã é¢æ°ããæ»ããšãã¹ã¿ãã¯ããæäžäœã®èŠçŽ ããããããããã®é¢æ°ãåŒã³åºããå Žæã«å°éããŸãã ã¹ã¿ãã¯ã§ã§ããã®ã¯ããã ãã§ãã ãããŠä»ãéåžžã«èå³æ·±ã質åããããŸãã ã§ã¯ãJavaScript ã§ã¯éåæã¯ã©ã®ããã«æ©èœããã®ã§ãããã?
å®éããã©ãŠã¶ã«ã¯ãã¹ã¿ãã¯ã«å ããŠããããã WebAPI ãæäœããããã®ç¹å¥ãªãã¥ãŒããããŸãã ãã®ãã¥ãŒã®é¢æ°ã¯ãã¹ã¿ãã¯ãå®å šã«ã¯ãªã¢ãããåŸã«ã®ã¿é çªã«å®è¡ãããŸãã ãã®åŸã®ã¿ãå®è¡ã®ããã«ãã¥ãŒããã¹ã¿ãã¯ã«é 眮ãããŸãã çŸæç¹ã§ã¹ã¿ãã¯äžã«å°ãªããšã XNUMX ã€ã®èŠçŽ ãããå Žåããããã¯ã¹ã¿ãã¯ã«è¿œå ã§ããŸããã ãã®ãããã¿ã€ã ã¢ãŠãã«ããé¢æ°ã®åŒã³åºãã¯ããã¥ãŒããã£ã±ãã«ãªã£ãŠããéã¯é¢æ°ããã¥ãŒããã¹ã¿ãã¯ã«å°éã§ããªããããæéçã«äžæ£ç¢ºã«ãªãããšããããããŸãã
次ã®äŸãèŠãŠã段éçã«å®è£ ããŠã¿ãŸãããã ã·ã¹ãã å ã§äœãèµ·ãã£ãŠããã®ããèŠãŠã¿ãŸãããã
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() {⊠}) ã³ãã³ããå®è¡ãããŸãã ãã©ãŠã¶ãŒã¯ãWeb API ã®äžéšã§ããã¿ã€ããŒãäœæããŸãã ã«ãŠã³ãããŠã³ãå®è¡ããŸãã
7) setTimeout(function cb1() {⊠}) ã³ãã³ãã¯äœæ¥ãå®äºããã³ãŒã« ã¹ã¿ãã¯ããåé€ãããŸãã
8) console.log('Bye') ã³ãã³ããã³ãŒã« ã¹ã¿ãã¯ã«è¿œå ãããŸãã
9) console.log('Bye') ã³ãã³ããå®è¡ãããŸãã
10) ã³ãã³ã console.log('Bye') ãã³ãŒã« ã¹ã¿ãã¯ããåé€ãããŸãã
11) å°ãªããšã 5000 ããªç§ãçµéãããšãã¿ã€ããŒãçµäºãã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 ãã§ãŒã³ãç»å Žããã³ãŒãã®å¯èªæ§ãåäžããŸãã
- ãšã©ãŒãã€ã³ã¿ãŒã»ããããå¥ã®æ¹æ³ããããŸãã
- Promise.allãè¿œå ãã䞊åå®è¡
- ãã¹ããããéåæ㯠async/await ã§è§£æ±ºã§ããŸã
ãããããã®çŽæã«ã¯éçããããŸãã ããšãã°ãã¿ã³ããªã³ãæã£ãŠèžããªããã°çŽæããã£ã³ã»ã«ããããšã¯ã§ããŸããããããŠæãéèŠãªããšã¯ãçŽæ㯠XNUMX ã€ã®äŸ¡å€èŠ³ã§æ©èœãããšããããšã§ãã
ããŠãããããã¯é 調ã«ãªã¢ã¯ãã£ãããã°ã©ãã³ã°ã«è¿ã¥ããŠãããŸãã ç²ããïŒ ãŸããè¯ãããšã¯ãã«ã¢ã¡ãéžé ãããã¬ã€ã³ã¹ããŒãã³ã°ãããæ»ã£ãŠç¶ããèªãããšãã§ãããšããããšã§ãã ãããŠç§ã¯ç¶ããŸãã
ãªã¢ã¯ãã£ãããã°ã©ãã³ã°â- ããŒã¿ ãããŒãšå€æŽã®äŒæã«çŠç¹ãåœãŠãããã°ã©ãã³ã° ãã©ãã€ã ã ããŒã¿ ã¹ããªãŒã ãšã¯äœãã詳ããèŠãŠã¿ãŸãããã
// ÐПлÑÑаеЌ ÑÑÑÐ»ÐºÑ ÐœÐ° ÑлеЌеМÑ
const input = ducument.querySelector('input');
const eventsArray = [];
// ÐÑÑОЌ кажЎПе ÑПбÑÑОе в ЌаÑÑОв eventsArray
input.addEventListener('keyup',
event => eventsArray.push(event)
);
å ¥åãã£ãŒã«ãããããšæ³åããŠã¿ãŸãããã é åãäœæããå ¥åã€ãã³ãã®ããŒã¢ããããšã«ã€ãã³ããé åã«ä¿åããŸãã åæã«ãé åãæéã«ãã£ãŠãœãŒããããŠããããšã«ã泚æããŠãã ããã åŸã®ã€ãã³ãã®ã€ã³ããã¯ã¹ã¯ã以åã®ã€ãã³ãã®ã€ã³ããã¯ã¹ããã倧ãããªããŸãã ãã®ãããªé åã¯åçŽåãããããŒã¿ ãã㌠ã¢ãã«ã§ããããŸã ãããŒã§ã¯ãããŸããã ãã®é åãå®å šã«ã¹ããªãŒã ãšåŒã¶ããã«ã¯ãæ°ããããŒã¿ãå°çããããšãäœããã®æ¹æ³ã§ãµãã¹ã¯ã©ã€ããŒã«éç¥ã§ããªããã°ãªããŸããã ãããã£ãŠããããŒã®å®çŸ©ã«å°éããŸãã
ããŒã¿ã¹ããªãŒã
const { interval1 } = Rx;
const { take } = RxOperators;
interval(1000).pipe(
take(4)
)
æµãâæéé ã«äžŠã¹æ¿ããããããŒã¿ã®é åã§ãããããŒã¿ãå€æŽãããããšã瀺ãããšãã§ããŸãã ããã§ãXNUMX ã€ã®ã¢ã¯ã·ã§ã³ã«å¯ŸããŠã³ãŒãã®ããŸããŸãªéšåã§è€æ°ã®ã€ãã³ããããªã¬ãŒããå¿ èŠãããã³ãŒããèšè¿°ããããšãã©ãã»ã©äŸ¿å©ã«ãªãããæ³åããŠã¿ãŠãã ããã ã¹ããªãŒã ã賌èªããã ãã§ãå€æŽãçºçãããšãã«éç¥ãããŸãã RxJs ã©ã€ãã©ãªã¯ãããè¡ãããšãã§ããŸãã
RxJS ã¯ãç£èŠå¯èœãªã·ãŒã±ã³ã¹ã䜿çšããŠéåæããã³ã€ãã³ãããŒã¹ã®ããã°ã©ã ãæäœããããã®ã©ã€ãã©ãªã§ãã ã©ã€ãã©ãªã¯äž»ãªã¿ã€ããæäŸããŸã 芳枬ã§ãããããã€ãã®ãã«ã㌠ã¿ã€ã (ãªãã¶ãŒããŒãã¹ã±ãžã¥ãŒã©ãŒããµããžã§ã¯ã) ããã³ã³ã¬ã¯ã·ã§ã³ãšåæ§ã«ã€ãã³ããæäœããããã®æŒç®å (ãããããã£ã«ã¿ãŒããªãã¥ãŒã¹ããã¹ãŠ ããã³ JavaScript é åã®åæ§ã®ãã®)ã
ãã®ã©ã€ãã©ãªã®åºæ¬çãªæŠå¿µãç解ããŸãããã
ãªãã¶ãŒããã«ããªãã¶ãŒããŒããããã¥ãŒãµãŒ
Observable ã¯ãæåã«èª¬æããåºæ¬åã§ãã ãã®ã¯ã©ã¹ã«ã¯ãRxJs å®è£ ã®äž»èŠéšåãå«ãŸããŠããŸãã ããã¯ç£èŠå¯èœãªã¹ããªãŒã ã«é¢é£ä»ããããŠãããsubscribe ã¡ãœããã䜿çšããŠãµãã¹ã¯ã©ã€ãã§ããŸãã
Observable ã¯ãæŽæ°ãäœæããããã®è£å©ã¡ã«ããºã ããããã ãªãã¶ãŒããŒã ãªãã¶ãŒããŒã®å€ã®ãœãŒã¹ã¯ãšåŒã°ããŸã ãããã¥ãŒãµãŒã é åãã€ãã¬ãŒã¿ãWeb ãœã±ãããããçš®ã®ã€ãã³ããªã©ãèããããŸãã ãããã£ãŠãobservable ã¯ãããã¥ãŒãµãŒãšãªãã¶ãŒããŒã®éã®å°äœã§ãããšèšããŸãã
Observable 㯠XNUMX çš®é¡ã® Observer ã€ãã³ããåŠçããŸãã
- 次 - æ°ããããŒã¿
- error - ã·ãŒã±ã³ã¹ãäŸå€ã«ããçµäºããå Žåã®ãšã©ãŒã ãã®ã€ãã³ãã¯ã·ãŒã±ã³ã¹ã®çµäºãæå³ããŸãã
- complete - ã·ãŒã±ã³ã¹ã®çµäºã«é¢ããä¿¡å·ã ããã¯ãæ°ããããŒã¿ãããååšããªãããšãæå³ããŸã
ãã¢ãèŠãŠã¿ãŸããã:
æåã¯1ã2ã3ã1ç§åŸã®å€ãåŠçããŸãã 4 ãååŸããŠã¹ã¬ãããçµäºããŸãã
èããå£ã«åºãŠãã
ãããŠãããã«ã€ããŠæžããããäŒããæ¹ãé¢çœãããšã«æ°ã¥ããŸããã ð
ãµãã¹ã¯ãªãã·ã§ã³
ã¹ããªãŒã ããµãã¹ã¯ã©ã€ããããšãã«ãæ°ããã¯ã©ã¹ãäœæããŸã 賌èªãããã«ãããã¡ãœããã§è³Œèªã解é€ãããªãã·ã§ã³ãæäŸãããŸã ç»é²è§£é€ã 次ã®ã¡ãœããã䜿çšããŠãµãã¹ã¯ãªãã·ã§ã³ãã°ã«ãŒãåããããšãã§ããŸã å ããŸãã ããã§ããã次ã䜿çšããŠã¹ã¬ããã®ã°ã«ãŒãã解é€ã§ããã®ã¯è«ççã§ãã åé€ããŸãã add ã¡ãœãããšremove ã¡ãœããã¯ãå¥ã®ãµãã¹ã¯ãªãã·ã§ã³ãå ¥åãšããŠåãå ¥ããŸãã ãµãã¹ã¯ãªãã·ã§ã³ã解é€ãããšãã¯ããããã unsubscribe ã¡ãœãããåŒã³åºãããã®ããã«ããã¹ãŠã®åãµãã¹ã¯ãªãã·ã§ã³ãããµãã¹ã¯ãªãã·ã§ã³ã解é€ããããšã«æ³šæããŠãã ããã ã©ããã
ã¹ããªãŒã ã®çš®é¡
HOT | ã³ãŒã«ã |
---|---|
ãããã¥ãŒãµãŒã¯èŠ³æž¬å¯èœãªå€éšã§äœæãããŸã | ãããã¥ãŒãµãŒã¯observableå ã§äœæãããŸã |
ããŒã¿ã¯ãªãã¶ãŒããã«ã®äœææã«æž¡ãããŸã | ããŒã¿ã¯è³Œèªæã«æäŸãããŸãã |
賌èªã解é€ããã«ã¯ããã«ããžãã¯ãå¿ èŠã§ã | ã¹ã¬ãããåæã«çµäºãã |
XNUMX察å€ã®é¢ä¿ã䜿çšããŸã | XNUMX 察 XNUMX ã®é¢ä¿ã䜿çšããŸã |
ãã¹ãŠã®ãµãã¹ã¯ãªãã·ã§ã³ã«ã¯åã䟡å€ããããŸã | ãµãã¹ã¯ãªãã·ã§ã³ã¯ç¬ç«ããŠããŸã |
å¥çŽããŠããªãå ŽåãããŒã¿ã倱ãããå¯èœæ§ããããŸã | æ°ãããµãã¹ã¯ãªãã·ã§ã³ã®ãã¹ãŠã®ã¹ããªãŒã å€ãåçºè¡ããŸã |
äŸãããªããæ ç»é€šã®æ ç»ã®ãããªç±ãæµããã€ã¡ãŒãžããŸãã ã©ã®æç¹ã§æ¥ãã®ãããã®ç¬éããèŠå§ããŸããã ç§ã¯ãããã®ã³ãŒã«ãã¹ããªãŒã ãšã³ãŒã«ãæ¯èŒããŸãã ãµããŒãã çºä¿¡è ã¯èª°ã§ãçå®çªé»è©±ã®é²é³ãæåããæåŸãŸã§èãããšãã§ããŸãããç»é²ã解é€ããã°é»è©±ãåãããšãã§ããŸãã
ããããæããæµããããããšã«æ³šæããããšæããŸãïŒç§ã¯ãã®ãããªå®çŸ©ã«ééããã®ã¯éåžžã«ãŸãã§ãå€åœäººã³ãã¥ããã£ã§ã®ã¿ã§ãïŒ - ããã¯å·ããæµãããç±ãæµãã«å€ããæµãã§ãã çåãçããŸã - ã©ãã§äœ¿çšãããã§ãïŒïŒå®è·µããäŸã瀺ããŸãã
ç§ã¯Angularã䜿ã£ãŠäœæ¥ããŠããŸãã 圌㯠rxjs ãç©æ¥µçã«äœ¿çšããŠããŸãã ãµãŒããŒã«ããŒã¿ãååŸããã«ã¯ãã³ãŒã«ã ã¹ããªãŒã ãå¿ èŠã§ãããasyncPipe ã䜿çšããŠãã³ãã¬ãŒãã§ãã®ã¹ããªãŒã ã䜿çšããŸãã ãã®ãã€ããæ°å䜿çšãããšãã³ãŒã«ã ã¹ããªãŒã ã®å®çŸ©ã«æ»ããåãã€ãããµãŒããŒã«ããŒã¿ãèŠæ±ããŸãããããã¯æ§ããã«èšã£ãŠãå¥åŠã§ãã ãããŠãã³ãŒã«ã ã¹ããªãŒã ããŠã©ãŒã ã¹ããªãŒã ã«å€æãããšããªã¯ãšã¹ã㯠XNUMX åçºçããŸãã
äžè¬ã«ããããŒã®ã¿ã€ããç解ããããšã¯åå¿è ã«ãšã£ãŠéåžžã«å°é£ã§ãããéèŠã§ãã
ãªãã¬ãŒã¿ãŒ
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 ãäœæããŸãã
æŒç®åãã£ã«ã¿ãŒ
ãã£ã«ã¿ãŒ ãªãã¬ãŒã¿ãŒã¯ããã®ååã瀺ãããã«ãã¹ããªãŒã ä¿¡å·ããã£ã«ã¿ãŒåŠçããŸãã æŒç®åã true ãè¿ããå Žåãããã«ã¹ãããããŸãã
æŒç®å - ãã€ã¯
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 )
);
æŒç®åçµåææ°
combinlate æŒç®åã¯ãpromise.all ã«äŒŒãŠããŸãã è€æ°ã®ã¹ã¬ããã XNUMX ã€ã«çµåããŸãã åã¹ã¬ãããå°ãªããšã XNUMX ã€ã®çºè¡ãè¡ã£ãåŸãåã¹ã¬ããããææ°ã®å€ãé åã®åœ¢åŒã§ååŸããŸãã ããã«ãçµåãããã¹ããªãŒã ããã®æŸåºåŸã¯ãæ°ããå€ãåŸãããŸãã
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)
);
ãªãã¬ãŒã¿ãŒ - å ±æãã¿ãã
ã¿ããæŒç®åã䜿çšãããšãå¯äœçšãã€ãŸãã·ãŒã±ã³ã¹ã«åœ±é¿ãäžããªãã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸãã
å ±æãŠãŒãã£ãªãã£ã®ãªãã¬ãŒã¿ã¯ãã³ãŒã«ã ã¹ããªãŒã ãããã ã¹ããªãŒã ã«å€ããããšãã§ããŸãã
ãªãã¬ãŒã¿ãŒã¯å®äºã§ãã äž»é¡ã«ç§»ããŸãããã
èããå£ã«åºãŠãã
ãããŠããè¶ã飲ã¿ã«è¡ããŸããã ããããäŸã¯ãã飜ãã ð
被éšè ã®å®¶æ
ãµããžã§ã¯ã ãã¡ããªã¯ãããã ã¹ã¬ããã®ä»£è¡šçãªäŸã§ãã ãããã®ã¯ã©ã¹ã¯ããªãã¶ãŒããã«ãšãªãã¶ãŒããŒãšããŠåæã«æ©èœããäžçš®ã®ãã€ããªããã§ãã 話é¡ã®ã¹ããªãŒã ãªã®ã§ã賌èªã解é€ããå¿ èŠããããŸãã äž»ãªæ¹æ³ã«ã€ããŠèšãã°ã次ã®ãšããã§ãã
- 次 - æ°ããããŒã¿ãã¹ããªãŒã ã«æž¡ã
- error - ãšã©ãŒãšã¹ã¬ããã®çµäº
- å®äº - ã¹ã¬ããã®çµãã
- è³Œèª - ã¹ããªãŒã ã賌èªãã
- unsubscribe - ã¹ã¬ããããã®è³Œèªã解é€ããŸã
- asObservable - ãªãã¶ãŒããŒã«å€æããŸã
- toPromise - çŽæã«å€æããŸã
4 5çš®é¡ã®ç§ç®ãå²ãåœãŠãŸãã
èããå£ã«åºãŠãã
é ä¿¡ã§ã¯4ã€ãšèšã£ãã®ã§ãããããšXNUMXã€è¿œå ãããŠããããã§ãã ããšããã«ããããã«ãçããŠåŠã³ãŸãããã
åçŽãªäž»é¡ new Subject()
- æãåçŽãªçš®é¡ã®äž»é¡ã ãã©ã¡ãŒã¿ãªãã§äœæãããŸããã ãµãã¹ã¯ãªãã·ã§ã³åŸã«ã®ã¿ååŸãããå€ãæž¡ããŸãã
è¡åäž»äœ new BehaviorSubject( defaultData<T> )
- ç§ã®æèŠã§ã¯ãæãäžè¬çãªã¿ã€ãã®äž»é¡ã§ãã å
¥åã«ã¯ããã©ã«ãå€ã䜿çšãããŸãã å®æ賌èªæã«éä¿¡ãããææ°å·ã®ããŒã¿ãåžžã«ä¿åããŸãã ãã®ã¯ã©ã¹ã«ã¯ãã¹ããªãŒã ã®çŸåšã®å€ãè¿ã䟿å©ãª value ã¡ãœããããããŸãã
ãªãã¬ã€ä»¶å new ReplaySubject(bufferSize?: number, windowTime?: number)
- ãªãã·ã§ã³ã§ãæåã®åŒæ°ãšããŠãããèªäœã«ä¿åããå€ã®ãããã¡ãŒã®ãµã€ãºãåããXNUMX çªç®ã®åŒæ°ã«ã¯å€æŽãå¿
èŠã«ãªããŸãã
éåæ件å new AsyncSubject()
- ãµãã¹ã¯ã©ã€ãæã«ã¯äœãèµ·ããããå®äºããå Žåã«ã®ã¿å€ãè¿ãããŸãã ã¹ããªãŒã ã®æåŸã®å€ã®ã¿ãè¿ãããŸãã
Webãœã±ããã®ä»¶å new WebSocketSubject(urlConfigOrSource: string | WebSocketSubjectConfig<T> | Observable<T>, destination?: Observer<T>)
- ããã¥ã¡ã³ãã«ã¯ããã«ã€ããŠèšèŒãããŠããããç§èªèº«ãåããŠç¥ããŸããã 圌ãäœãããŠããã®ã誰ã«ãåãããªãã®ã§ãæžãå ããŠãããŸãã
ãµãŒã ããŠãç§ãä»æ¥èšãããã£ãããšã¯ãã¹ãŠæ€èšããŸããã ãã®æ å ±ãã圹ã«ç«ãŠã°å¹žãã§ãã [圹ç«ã€æ å ±] ã¿ãã§æç®ãªã¹ããèªåã§èªãããšãã§ããŸãã
圹ç«ã€æ å ±
https://vk.com/frontend_practice?w=wall-182297870_931 - ã¹ããªãŒã ãžã®ãªã³ã¯https://habr.com/ru/company/ruvds/blog/337042/ â JS ã®ä»çµã¿: ãšã³ãžã³ã®æŠèŠãã©ã³ã¿ã€ã ã¡ã«ããºã ãã³ãŒã« ã¹ã¿ãã¯https://habr.com/ru/company/ruvds/blog/340508 â JS ã®ä»çµã¿: ã€ãã³ã ã«ãŒããéåæãããã³ async / await ã䜿çšããŠã³ãŒããæ¹åãã XNUMX ã€ã®æ¹æ³http://vanilla-js.blogspot.com/2014/09/event-loop-javasript.html â JavaSript ã§ã®ã€ãã³ã ã«ãŒãã®ä»çµã¿https://tproger.ru/translations/asynchronous-javascript/ â éåæ JavaScript ã®é²åhttps://habr.com/ru/company/ruvds/blog/341880/ â RxJS ãšã¯äœã§ãã? RxJS ã«ã€ããŠç¥ã£ãŠãããšåœ¹ç«ã€ã®ã¯ãªãã§ãã?https://medium.com/ngx/practical-use-rxjs-81aaab57045c â RxJSã®å®çšåhttps://coursetro.com/posts/code/148/RxJS-Observables-TutorialâCreating-&-Subscribing-to-Observables â RxJS Observable ãã¥ãŒããªã¢ã« â Observable ã®äœæãšãµãã¹ã¯ã©ã€ãhttps://slides.com/zenabsaleem/rxjs-hot-cold-observables#/ - RXJS: ãããããã³ã³ãŒã«ãã®èŠ³æž¬å€https://clck.ru/FiPgB â Observable ãäœæããããã®ã¯ã©ã¹ãé¢æ°ã ãªãã¬ãŒã¿ãŒãhttps://www.learnrxjs.io/operators/ â RxJS æŒç®åã®äŸhttps://rxjs.dev/api - APIãªã¹ãhttps://clck.ru/FkS8Y â RxJSã®ããŸããŸãªä»¶åãšã¹ã±ãžã¥ãŒã«
åºæïŒ habr.com