ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

ืฉืœื•ื ืœื›ื•ืœื. ืกืจื’ื™ื™ ืื•ืžืœื ื™ืฆืงื™ ื‘ืงืฉืจ. ืœื ืžื–ืžืŸ ืื™ืจื—ืชื™ ื–ืจื ืขืœ ืชื›ื ื•ืช ืจื™ืืงื˜ื™ื‘ื™, ืฉื‘ื• ื“ื™ื‘ืจืชื™ ืขืœ ืืกื™ื ื›ืจื•ื ื™ ื‘-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(ืคื•ื ืงืฆื™ื” cb1() {โ€ฆ }) ืžื‘ื•ืฆืขืช. ื”ื“ืคื“ืคืŸ ื™ื•ืฆืจ ื˜ื™ื™ืžืจ ืฉื”ื•ื ื—ืœืง ืžืžืžืฉืง ื”-API ืฉืœ ื”ืื™ื ื˜ืจื ื˜. ื–ื” ื™ื‘ืฆืข ืกืคื™ืจื” ืœืื—ื•ืจ.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

7) ื”ืคืงื•ื“ื” setTimeout(function cb1() {โ€ฆ }) ื”ืฉืœื™ืžื” ืืช ืขื‘ื•ื“ืชื” ื•ื”ื•ืกืจื” ืžื—ืกื ื™ืช ื”ืฉื™ื—ื•ืช.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

8) ื”ืคืงื•ื“ื” console.log('ื‘ื™ื™') ืžืชื•ื•ืกืคืช ืœืขืจื™ืžืช ื”ืฉื™ื—ื•ืช.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

9) ื”ืคืงื•ื“ื” console.log('Bye') ืžื‘ื•ืฆืขืช.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

10) ื”ืคืงื•ื“ื” console.log('ื‘ื™ื™') ืžื•ืกืจืช ืžื—ืกื ื™ืช ื”ืฉื™ื—ื•ืช.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

11) ืœืื—ืจ ืฉื—ืœืคื• ืœืคื—ื•ืช 5000 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”, ื”ื˜ื™ื™ืžืจ ืžืกืชื™ื™ื ื•ืžืฆื™ื‘ ืืช ื”ื”ืชืงืฉืจื•ืช ื—ื–ืจื” cb1 ื‘ืชื•ืจ ืœื”ืชืงืฉืจื•ืช ื—ื–ืจื”.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

12) ืœื•ืœืืช ื”ืื™ืจื•ืข ืœื•ืงื—ืช ืืช ื”ืคื•ื ืงืฆื™ื” cb1 ืžื”ืชื•ืจ ืœื”ืชืงืฉืจื•ืช ื—ื–ืจื” ื•ืžืžืงืžืช ืื•ืชื” ื‘ืขืจื™ืžืช ื”ืฉื™ื—ื•ืช.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

13) ื”ืคื•ื ืงืฆื™ื” cb1 ืžื‘ื•ืฆืขืช ื•ืžื•ืกื™ืคื” ืืช console.log('cb1') ืœืขืจื™ืžืช ื”ืฉื™ื—ื•ืช.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-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 ื ื™ืชืŸ ืœื™ื™ืฉื ืจืง ืขืœ ื™ื“ื™ ืคื•ื ืงืฆื™ื•ืช. ื ื™ืชืŸ ืœื”ืขื‘ื™ืจ ืื•ืชื ื›ืžื• ื›ืœ ืžืฉืชื ื” ืื—ืจ ืœืคื•ื ืงืฆื™ื•ืช ืื—ืจื•ืช. ื›ืš ื ื•ืœื“ื• ืฉื™ื—ื•ืช ื—ื•ื–ืจื•ืช. ื•ื–ื” ืžื’ื ื™ื‘, ื›ื™ืฃ ื•ืฉื•ื‘ื‘, ืขื“ ืฉื–ื” ื”ื•ืคืš ืœืขืฆื‘, ืžืœื ื›ื•ืœื™ื” ื•ืขืฆื‘. ืœืžื”? ื–ื” ืคืฉื•ื˜:

  • ื›ื›ืœ ืฉื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ื”ืงื•ื“ ื’ื“ืœื”, ื”ืคืจื•ื™ืงื˜ ื”ื•ืคืš ื‘ืžื”ื™ืจื•ืช ืœื‘ืœื•ืงื™ื ืœื ื‘ืจื•ืจื™ื, ืžืงื•ื ื ื™ื ืฉื•ื‘ ื•ืฉื•ื‘ - "ืœืขื–ืื–ืœ ืœื”ืชืงืฉืจ ื‘ื—ื–ืจื”".
  • ืงืœ ืœืคืกืคืก ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช.
  • ืืชื” ืœื ื™ื›ื•ืœ ืœื”ื—ื–ื™ืจ ื‘ื™ื˜ื•ื™ื™ื ืขื ื—ื–ืจื”.

ืขื ื›ื ื™ืกืชื” ืฉืœ ื”ื‘ื˜ื—ื”, ื”ืžืฆื‘ ื”ืฉืชืคืจ ืžืขื˜.

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/wait

ืื‘ืœ ืœื”ื‘ื˜ื—ื•ืช ื™ืฉ ืžื’ื‘ืœื•ืช. ืœืžืฉืœ, ืื™ ืืคืฉืจ ืœื‘ื˜ืœ ื”ื‘ื˜ื—ื” ื‘ืœื™ ืœืจืงื•ื“ ืขื ื˜ืžื‘ื•ืจื™ืŸ, ื•ืžื” ืฉื”ื›ื™ ื—ืฉื•ื‘ ื–ื” ืฉื–ื” ืขื•ื‘ื“ ืขื ืขืจืš ืื—ื“.

ื•ื‘ื›ืŸ, ื ื™ื’ืฉื ื• ื‘ืฆื•ืจื” ื—ืœืงื” ืœืชื›ื ื•ืช ืจื™ืืงื˜ื™ื‘ื™. ืขื™ื™ืฃ? ื•ื‘ื›ืŸ, ืœืžืจื‘ื” ื”ืžื–ืœ, ืืชื” ื™ื›ื•ืœ ืœืœื›ืช ืœื”ื›ื™ืŸ ืชื”, ืœื—ืฉื•ื‘ ืขืœ ื–ื” ื•ืœื—ื–ื•ืจ ืœืงืจื•ื ืขื•ื“. ื•ืื ื™ ืืžืฉื™ืš.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

ืชื›ื ื•ืช ืจื™ืืงื˜ื™ื‘ื™โ€Šื”ื™ื ืคืจื“ื™ื’ืžืช ืชื›ื ื•ืช ื”ืžืชืžืงื“ืช ื‘ื–ืจื™ืžื•ืช ื ืชื•ื ื™ื ื•ื”ืคืฆืช ืฉื™ื ื•ื™ื™ื. ื‘ื•ืื• ื ืกืชื›ืœ ืžืงืจื•ื‘ ืขืœ ืžื” ื–ื” ื–ืจื ื ืชื•ื ื™ื.

// ะŸะพะปัƒั‡ะฐะตะผ ััั‹ะปะบัƒ ะฝะฐ ัะปะตะผะตะฝั‚
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)
)

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

ืชื–ืจื™ืโ€Šื”ื•ื ืžืขืจืš ืฉืœ ื ืชื•ื ื™ื ื”ืžืžื•ื™ื ื™ื ืœืคื™ ื–ืžืŸ ืฉื™ื›ื•ืœ ืœื”ืฆื‘ื™ืข ืขืœ ื›ืš ืฉื”ื ืชื•ื ื™ื ื”ืฉืชื ื•. ืขื›ืฉื™ื• ืชืืจื• ืœืขืฆืžื›ื ื›ืžื” ื ื•ื— ืœื›ืชื•ื‘ ืงื•ื“ ืฉื‘ื• ืคืขื•ืœื” ืื—ืช ืžืฆืจื™ื›ื” ืงืจื™ืื” ืœืžืกืคืจ ืื™ืจื•ืขื™ื ื‘ื—ืœืงื™ื ืฉื•ื ื™ื ืฉืœ ื”ืงื•ื“. ืื ื—ื ื• ืคืฉื•ื˜ ื ืจืฉืžื™ื ืœื–ืจื ื•ื”ื•ื ื™ื•ื“ื™ืข ืœื ื• ื›ืืฉืจ ื™ืชืจื—ืฉื• ืฉื™ื ื•ื™ื™ื. ื•ืกืคืจื™ื™ืช RxJs ื™ื›ื•ืœื” ืœืขืฉื•ืช ื–ืืช.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

RxJS ื”ื™ื ืกืคืจื™ื™ื” ืœืขื‘ื•ื“ื” ืขื ืชื•ื›ื ื™ื•ืช ืืกื™ื ื›ืจื•ื ื™ื•ืช ื•ืžื‘ื•ืกืกื•ืช ืื™ืจื•ืขื™ื ืชื•ืš ืฉื™ืžื•ืฉ ื‘ืจืฆืคื™ื ื ื™ืชื ื™ื ืœืฆืคื™ื™ื”. ื”ืกืคืจื™ื™ื” ืžืกืคืงืช ืืช ื”ืกื•ื’ ื”ืขื™ืงืจื™ ื ืฆืคื”, ืžืกืคืจ ืกื•ื’ื™ ืขื–ืจ (ืฆื•ืคื”, ืžืชื–ืžื ื™ื, ื ื•ืฉืื™ื) ื•ืžืคืขื™ืœื™ื ืœืขื‘ื•ื“ื” ืขื ืื™ืจื•ืขื™ื ื›ืžื• ืขื ืื•ืกืคื™ื (ืžืคื”, ืžืกื ืŸ, ืฆืžืฆื, ื›ืœ ื•ื“ื•ืžื™ื ืžืžืขืจืš JavaScript).

ื‘ื•ืื• ื ื‘ื™ืŸ ืืช ื”ืžื•ืฉื’ื™ื ื”ื‘ืกื™ืกื™ื™ื ืฉืœ ืกืคืจื™ื™ื” ื–ื•.

ื ืฆืคื”, ืฆื•ืคื”, ืžืคื™ืง

ื ื™ืชืŸ ืœืฆืคื•ืช ื”ื•ื ื”ืกื•ื’ ื”ื‘ืกื™ืกื™ ื”ืจืืฉื•ืŸ ืฉื ื‘ื—ืŸ. ืžื—ืœืงื” ื–ื• ืžื›ื™ืœื” ืืช ื”ื—ืœืง ื”ืขื™ืงืจื™ ืฉืœ ื”ื™ื™ืฉื•ื RxJs. ื”ื•ื ืžืฉื•ื™ืš ืœื–ืจื ื”ื ื™ืชืŸ ืœืฆืคื™ื™ื”, ืฉื ื™ืชืŸ ืœื”ื™ืจืฉื ืืœื™ื• ื‘ืืžืฆืขื•ืช ืฉื™ื˜ืช ื”ืžื ื•ื™.

Observable ืžื™ื™ืฉืžืช ืžื ื’ื ื•ืŸ ืขื•ื–ืจ ืœื™ืฆื™ืจืช ืขื“ื›ื•ื ื™ื, ืžื” ืฉื ืงืจื ืžืฉืงื™ืฃ. ืžืงื•ืจ ื”ืขืจื›ื™ื ืขื‘ื•ืจ ื”ืฆื•ืคื” ื ืงืจื ืžืคื™ืง. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžืขืจืš, ืื™ื˜ืจื˜ื•ืจ, ืฉืงืข ืื™ื ื˜ืจื ื˜, ืื™ืจื•ืข ื›ืœืฉื”ื• ื•ื›ื•'. ืื– ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื•ืžืจ ืฉ-observable ื”ื•ื ืžื ืฆื— ื‘ื™ืŸ ืžืคื™ืง ืœืฆื•ืคื”.

Observable ืžื˜ืคืœ ื‘ืฉืœื•ืฉื” ืกื•ื’ื™ื ืฉืœ ืื™ืจื•ืขื™ Observer:

  • ื”ื‘ื - ื ืชื•ื ื™ื ื—ื“ืฉื™ื
  • ืฉื’ื™ืื” - ืฉื’ื™ืื” ืื โ€‹โ€‹ื”ืจืฆืฃ ื”ืกืชื™ื™ื ืขืงื‘ ื—ืจื™ื’. ืื™ืจื•ืข ื–ื” ืžืจืžื– ื’ื ืขืœ ื”ืฉืœืžืช ื”ืจืฆืฃ.
  • ืฉืœื - ืื•ืช ืœื’ื‘ื™ ืกื•ืฃ ื”ืจืฆืฃ. ื–ื” ืื•ืžืจ ืฉืœื ื™ื”ื™ื• ื™ื•ืชืจ ื ืชื•ื ื™ื ื—ื“ืฉื™ื

ื‘ื•ื ื ืจืื” ืืช ื”ื”ื“ื’ืžื”:

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

ื‘ื”ืชื—ืœื” ื ืขื‘ื“ ืืช ื”ืขืจื›ื™ื 1, 2, 3 ื•ืœืื—ืจ ืฉื ื™ื™ื” ืื—ืช. ื ืงื‘ืœ 1 ื•ื ืกื™ื™ื ืืช ื”ื–ืจื ืฉืœื ื•.

ื—ื•ืฉื‘ ื‘ืงื•ืœ ืจื

ื•ืื– ื”ื‘ื ืชื™ ืฉืœืกืคืจ ื–ื” ื™ื•ืชืจ ืžืขื ื™ื™ืŸ ืžืœื›ืชื•ื‘ ืขืœ ื–ื”. ๐Ÿ˜€

ืžึดื ื•ึผื™

ื›ืฉืื ื—ื ื• ื ืจืฉืžื™ื ืœื–ืจื ืื ื—ื ื• ื™ื•ืฆืจื™ื ืžื—ืœืงื” ื—ื“ืฉื” ืžึดื ื•ึผื™ื™ืืžื” ืฉื ื•ืชืŸ ืœื ื• ืืช ื”ืืคืฉืจื•ืช ืœื‘ื˜ืœ ืืช ื”ืžื ื•ื™ ื‘ืืžืฆืขื•ืช ื”ืฉื™ื˜ื” ืœื‘ื˜ืœ ืืช ื”ืžื ื•ื™. ืื ื• ื™ื›ื•ืœื™ื ื’ื ืœืงื‘ืฅ ืžื ื•ื™ื™ื ื‘ืฉื™ื˜ื” ืœื”ื•ืกื™ืฃ. ื•ื‘ื›ืŸ, ื–ื” ื”ื’ื™ื•ื ื™ ืฉื ื•ื›ืœ ืœื‘ื˜ืœ ืงื‘ื•ืฆื•ืช ืฉืœ ืฉืจืฉื•ืจื™ื ื‘ืืžืฆืขื•ืช ืœื”ืกื™ืจ. ืฉื™ื˜ื•ืช ื”ื”ื•ืกืคื” ื•ื”ื”ืกืจื” ืžืงื‘ืœื™ื ืžื ื•ื™ ืื—ืจ ื›ืงืœื˜. ื‘ืจืฆื•ื ื™ ืœืฆื™ื™ืŸ ืฉื›ืืฉืจ ืื ื• ืžื‘ื˜ืœื™ื ืืช ื”ืžื ื•ื™, ืื ื• ืžื‘ื˜ืœื™ื ืืช ื”ืžื ื•ื™ ืžื›ืœ ืžื ื•ื™ื™ ื”ื™ืœื“ื™ื ื›ืื™ืœื• ื”ื ืงืจืื• ืœืฉื™ื˜ืช ื‘ื™ื˜ื•ืœ ื”ืžื ื•ื™. ืœืš ืขืœ ื–ื”.

ืกื•ื’ื™ ื–ืจืžื™ื

ื—ึทื
ืงึทืจ

ื”ืžืคื™ืง ื ื•ืฆืจ ืžื—ื•ืฅ ืœืฆืคื™ื™ื”
ื”ืžืคื™ืง ื ื•ืฆืจ ื‘ืชื•ืš ื ื™ืชืŸ ืœืฆืคื™ื™ื”

ื”ื ืชื•ื ื™ื ืžื•ืขื‘ืจื™ื ื‘ื–ืžืŸ ื™ืฆื™ืจืช ื”ื ืฆืคื”
ื”ื ืชื•ื ื™ื ืžืกื•ืคืงื™ื ื‘ื–ืžืŸ ื”ื”ืจืฉืžื”

ืฆืจื™ืš ื”ื™ื’ื™ื•ืŸ ื ื•ืกืฃ ืœื‘ื™ื˜ื•ืœ ื”ืžื ื•ื™
ื”ืฉืจืฉื•ืจ ืžืกืชื™ื™ื ืžืขืฆืžื•

ืžืฉืชืžืฉ ื‘ืžืขืจื›ืช ื™ื—ืกื™ื ืฉืœ ืื—ื“ ืœืจื‘ื™ื
ืžืฉืชืžืฉ ื‘ืžืขืจื›ืช ื™ื—ืกื™ื ืฉืœ ืื—ื“ ืœืื—ื“

ืœื›ืœ ื”ืžื ื•ื™ื™ื ื™ืฉ ืื•ืชื” ืžืฉืžืขื•ืช
ื”ืžื ื•ื™ื™ื ื”ื ืขืฆืžืื™ื™ื

ื ืชื•ื ื™ื ืขืœื•ืœื™ื ืœืœื›ืช ืœืื™ื‘ื•ื“ ืื ืื™ืŸ ืœืš ืžื ื•ื™
ืžื•ืฆื™ื ืžื—ื“ืฉ ืืช ื›ืœ ืขืจื›ื™ ื”ื–ืจื ืขื‘ื•ืจ ืžื ื•ื™ ื—ื“ืฉ

ื›ื“ื™ ืœืชืช ืื ืœื•ื’ื™ื”, ื”ื™ื™ืชื™ ื—ื•ืฉื‘ ืขืœ ื–ืจื ื—ื ื›ืขืœ ืกืจื˜ ื‘ืชื™ืื˜ืจื•ืŸ. ื‘ืื™ื–ื• ื ืงื•ื“ืช ื–ืžืŸ ื”ื’ืขืช, ืžืื•ืชื• ืจื’ืข ื”ืชื—ืœืช ืœืฆืคื•ืช. ื”ื™ื™ืชื™ ืžืฉื•ื•ื” ื–ืจื™ืžื” ืงืจื” ืœืฉื™ื—ื” ื‘ื˜ื›ื ื•ืœื•ื’ื™ื”. ืชืžื™ื›ื”. ื›ืœ ืžืชืงืฉืจ ืžืื–ื™ืŸ ืœื”ืงืœื˜ืช ื”ื“ื•ืืจ ื”ืงื•ืœื™ ืžืชื—ื™ืœืชื• ื•ืขื“ ืกื•ืคื•, ืืš ืืชื” ื™ื›ื•ืœ ืœื ืชืง ื‘ืืžืฆืขื•ืช ื‘ื™ื˜ื•ืœ ื”ืจืฉืžื”.

ื‘ืจืฆื•ื ื™ ืœืฆื™ื™ืŸ ืฉื™ืฉ ื’ื ืžื” ืฉื ืงืจื ื–ืจื™ืžื•ืช ื—ืžื•ืช (ื ืชืงืœืชื™ ื‘ื”ื’ื“ืจื” ื–ื• ืœืขื™ืชื™ื ืจื—ื•ืงื•ืช ื‘ื™ื•ืชืจ ื•ืจืง ื‘ืงื”ื™ืœื•ืช ื–ืจื•ืช) - ืžื“ื•ื‘ืจ ื‘ื–ืจื™ืžื” ืฉื”ื•ืคืš ืžื–ืจื™ืžื” ืงืจื” ืœื–ืจื™ืžื” ื—ืžื”. ื ืฉืืœืช ื”ืฉืืœื” - ื”ื™ื›ืŸ ืœื”ืฉืชืžืฉ)) ืืชืŸ ื“ื•ื’ืžื” ืžื”ืชืจื’ื•ืœ.

ืื ื™ ืขื•ื‘ื“ ืขื 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. ื ืกืชื›ืœ ืขืœ ื›ืžื” ืžื”ืคื•ืคื•ืœืจื™ื™ื ื‘ื™ื•ืชืจ, ื•ืคืจื˜ื™ื ื ื•ืกืคื™ื ืขืœ ื”ืžืคืขื™ืœื™ื ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืืžืฆืขื•ืช ื”ืงื™ืฉื•ืจื™ื ื‘ืžื™ื“ืข ื”ืฉื™ืžื•ืฉื™.

ืžืคืขื™ืœื™ื - ืฉืœ

ื ืชื—ื™ืœ ืขื ืžืคืขื™ืœ ื”ืขื•ื–ืจ ืฉืœ. ื–ื” ื™ื•ืฆืจ ืฆืคื™ื™ื” ื”ืžื‘ื•ืกืกืช ืขืœ ืขืจืš ืคืฉื•ื˜.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

ืžืคืขื™ืœื™ื - ืžืกื ืŸ

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

ืžืคืขื™ืœ ื”ืžืกื ืŸ, ื›ืคื™ ืฉื”ืฉื ืžืจืžื–, ืžืกื ืŸ ืืช ืื•ืช ื”ื–ืจื. ืื ื”ืื•ืคืจื˜ื•ืจ ืžื—ื–ื™ืจ true, ื”ื•ื ืžื“ืœื’ ื”ืœืื”.

ืžืคืขื™ืœื™ื - ืงื—

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

take โ€” ืœื•ืงื— ืืช ื”ืขืจืš ืฉืœ ืžืกืคืจ ื”ืคื•ืœื˜ื™ื, ืฉืื—ืจื™ื• ืžืกืชื™ื™ื ื”ื—ื•ื˜.

ืžืคืขื™ืœื™ื - 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 ืžื—ื–ื™ืจ 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 )
);  

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-JavaScript (Callback, Promise, RxJs)

ืžืคืขื™ืœื™ื - combineLatest

ื”ืื•ืคืจื˜ื•ืจ combineLatest ื“ื•ืžื” ื‘ืžืงืฆืช ืœ- belofte.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)

ืžืคืขื™ืœื™ื - ืžืคื”

ืื•ืคืจื˜ื•ืจ ืฉื™ื ื•ื™ ื”ืžืคื” ื”ื•ืคืš ืืช ืขืจืš ื”ืคื•ืœื˜ ืœืขืจืš ื—ื“ืฉ.

ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ื‘-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 - ืœื”ืคื•ืš ืœืฆื•ืคื”
  • toPromise - ื”ื•ืคืš ืœื”ื‘ื˜ื—ื”

ื™ืฉื ื 4 5 ืกื•ื’ื™ ื ื•ืฉืื™ื.

ื—ื•ืฉื‘ ื‘ืงื•ืœ ืจื

ื”ื™ื• 4 ืื ืฉื™ื ืฉื“ื™ื‘ืจื• ื‘ื–ืจื, ืื‘ืœ ื”ืชื‘ืจืจ ืฉื”ื ื”ื•ืกื™ืคื• ืขื•ื“ ืื—ื“. ื›ืžื• ืฉืื•ืžืจื™ื, ื—ื™ ื•ืชืœืžื“.

ื ื•ืฉื ืคืฉื•ื˜ new Subject()- ื”ืกื•ื’ ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ ืฉืœ ื ื•ืฉืื™ื. ื ื•ืฆืจ ืœืœื ืคืจืžื˜ืจื™ื. ืžืขื‘ื™ืจ ืขืจื›ื™ื ืฉื”ืชืงื‘ืœื• ืจืง ืœืื—ืจ ืžื ื•ื™.

ื ื•ืฉื ื”ืชื ื”ื’ื•ืช new BehaviorSubject( defaultData<T> ) โ€“ ืœื“ืขืชื™, ืกื•ื’ ื”ื ื•ืฉื ื”ื ืคื•ืฅ ื‘ื™ื•ืชืจ. ื”ืงืœื˜ ืžืงื‘ืœ ืืช ืขืจืš ื‘ืจื™ืจืช ื”ืžื—ื“ืœ. ืฉื•ืžืจ ืชืžื™ื“ ืืช ื”ื ืชื•ื ื™ื ืฉืœ ื”ื’ื™ืœื™ื•ืŸ ื”ืื—ืจื•ืŸ, ืืฉืจ ืžื•ืขื‘ืจ ื‘ืขืช ื”ื”ืจืฉืžื”. ืœืžื—ืœืงื” ื–ื• ื™ืฉ ื’ื ืฉื™ื˜ืช ืขืจืš ืฉื™ืžื•ืฉื™ืช, ื”ืžื—ื–ื™ืจื” ืืช ื”ืขืจืš ื”ื ื•ื›ื—ื™ ืฉืœ ื”ื–ืจื.

ReplaySubject new ReplaySubject(bufferSize?: number, windowTime?: number) - ื”ืงืœื˜ ื™ื›ื•ืœ ืื•ืคืฆื™ื•ื ืœื™ ืœืงื—ืช ื›ืืจื’ื•ืžื ื˜ ื”ืจืืฉื•ืŸ ืืช ื’ื•ื“ืœ ืžืื’ืจ ื”ืขืจื›ื™ื ืฉื”ื•ื ื™ืื—ืกืŸ ื‘ืขืฆืžื•, ื•ื›ืฉื ื™ ืืช ื”ื–ืžืŸ ืฉื‘ื• ืื ื• ื–ืงื•ืงื™ื ืœืฉื™ื ื•ื™ื™ื.

AsyncSubject new AsyncSubject() - ืฉื•ื ื“ื‘ืจ ืœื ืงื•ืจื” ื‘ืขืช ื”ืจืฉืžื”, ื•ื”ืขืจืš ื™ื•ื—ื–ืจ ืจืง ืœืื—ืจ ื”ืฉืœืžืชื•. ืจืง ื”ืขืจืš ื”ืื—ืจื•ืŸ ืฉืœ ื”ื–ืจื ื™ื•ื—ื–ืจ.

WebSocketSubject new WebSocketSubject(urlConfigOrSource: string | WebSocketSubjectConfig<T> | Observable<T>, destination?: Observer<T>) - ื”ืชื™ืขื•ื“ ืฉื•ืชืง ืœื’ื‘ื™ื• ื•ืื ื™ ืจื•ืื” ืื•ืชื• ื‘ืคืขื ื”ืจืืฉื•ื ื”. ืื ืžื™ืฉื”ื• ื™ื•ื“ืข ืžื” ื”ื•ื ืขื•ืฉื”, ื ื ืœื›ืชื•ื‘ ื•ื ื•ืกื™ืฃ ืืช ื–ื”.

ืคื™ื•. ื•ื‘ื›ืŸ, ื›ื™ืกื™ื ื• ืืช ื›ืœ ืžื” ืฉืจืฆื™ืชื™ ืœืกืคืจ ืœื›ื ื”ื™ื•ื. ืื ื™ ืžืงื•ื•ื” ืฉื”ืžื™ื“ืข ื”ื–ื” ื”ื™ื” ืฉื™ืžื•ืฉื™. ืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ืืช ืจืฉื™ืžืช ื”ื”ืคื ื™ื•ืช ื‘ืขืฆืžืš ื‘ืœืฉื•ื ื™ืช ื”ืžื™ื“ืข ื”ืฉื™ืžื•ืฉื™.

ืžื™ื“ืข ืฉื™ืžื•ืฉื™

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”