Sobes.tech
Middle

Токтом менен иштөө үчүн кайсы операторлорду билесиз?

sobes.tech AI

AIден жооп

Деректер агымдар менен иштөө үчүн операторлор, айрыкча асинхрон программалоо жана реактивдүү китепканалардын (мисалы, RxJS) контекстинде актуалдуу, бир нече категорияга бөлүнөт:

Жасоо операторлору (Creation Operators): Жаңы агымды түзүү үчүн колдонулат:

  • of(): белгилүү бир маанилер топтомун чыгарат:
    // RxJSтен
    import { of } from 'rxjs';
    
    const source = of(1, 2, 3); // 1, 2, 3 чыгарат
    
  • from(): ар кандай булактарды (Promise, Iterable, ArrayLike) агымга айлантат:
    // RxJSтен
    import { from } from 'rxjs';
    
    const source = from([10, 20, 30]); // массивден агым
    
  • interval(): белгиленген убакыт аралыгында санды чыгарат:
    // RxJSтен
    import { interval } from 'rxjs';
    
    const source = interval(1000); // ар секунда сан чыгарат
    
  • timer(): белгиленген убакыттан кийин бир маанини чыгарат, ошондой эле интервал менен кийинки маанилерди чыгара алат:
  • fromEvent(): DOM окуяларынан же EventEmitterден агым түзөт:

Трансформация операторлору (Transformation Operators): Агымдагы маанилерди өзгөртөт:

  • map(): ар бир мааниге белгилүү бир функцияны колдонуп өзгөртөт:
    // RxJSтен
    import { of } from 'rxjs';
    import { map } from 'rxjs/operators';
    
    const source = of(1, 2, 3);
    const result = source.pipe(map(x => x * 2)); // 2, 4, 6 чыгарат
    
  • pluck(): ар бир объекттен белгилүү бир мүчөнү чыгарат:
  • scan(): кутучалоочу функцияны колдонуп, аралык натыйжаларды чыгарат:
  • mergeMap() / flatMap(): ар бир мааниден жаңы агым түзүп, аларды бириктирет:
    // RxJSтен
    import { of } from 'rxjs';
    import { mergeMap } from 'rxjs/operators';
    
    const source = of(1, 2);
    const result = source.pipe(mergeMap(val => of(val + 'a', val + 'b'))); // '1a', '1b', '2a', '2b' чыгарат
    
  • switchMap(): жаңы мааниге өтүүдө мурдагы агымды токтотот:
  • concatMap(): агымдарды катар менен иштетет:

Фильтр операторлору (Filtering Operators): маанилерди фильтрлөө:

  • filter(): белгилүү шартты канааттандырган маанилерди гана өткөрөт:
    // RxJSтен
    import { of } from 'rxjs';
    import { filter } from 'rxjs/operators';
    
    const source = of(1, 2, 3, 4);
    const result = source.pipe(filter(x => x % 2 === 0)); // 2, 4 чыгарат
    
  • take(): биринчи N маанини гана өткөрөт:
  • takeUntil(): башка агым белгиленген убакытка чейин маанилерди чыгарат:
  • skip(): биринчи N маанини өткөрбөйт:
  • debounceTime(): белгиленген убакыт ичинде өзгөрбөгөн маанини чыгарат:
  • distinctUntilChanged(): акыркы мааниден айырмаланган маанини чыгарат:

Коомдоштуруу операторлору (Combination Operators): бир нече агымды бириктирет:

  • combineLatest(): акыркы маанилерди бириктирет:
  • zip(): индекс боюнча маанилерди бириктирет:
  • merge(): убакытка карабастан маанилерди чыгарат:
  • concat(): катар менен иштетет:

Ката иштетүү операторлору (Error Handling Operators): каталарга жооп берет:

  • catchError(): катаны кармайт жана ишти улантат же башка агымга алмаштырат:
    // RxJSтен
    import { throwError } from 'rxjs';
    import { catchError, of } from 'rxjs/operators';
    
    const source = throwError(() => new Error('Кээ бир нерсе ката кетти'));
    const result = source.pipe(catchError(err => of('Катаны кармап алдык'))); // 'Катаны кармап алдык' чыгарат
    
  • retry(): каталар болсо кайра аракет кылат:

Аягына жетүү операторлору (Completion Operators): агымдын аяктоо шарттарын аныктайт:

  • finalize(): аяктоо же токтотуу учурунда иштетет:
  • tap(): жанама таасирлерди жасайт:

Бул операторлордун тизмеги толук эмес, бирок маанилүү жана реактивдүү программалоодо кеңири колдонулат.