কৌণিক মধ্যে পাইপ () ফাংশন কি


108

পাইপগুলি টেমপ্লেটে ডেটা (ফর্ম্যাট) রূপান্তর করার জন্য ফিল্টার।

আমি pipe()নীচে হিসাবে ফাংশন জুড়ে এসেছি । pipe()এই ক্ষেত্রে এই ফাংশনটির সঠিক অর্থ কী?

return this.http.get<Hero>(url)
  .pipe(
    tap(_ => this.log(`fetched hero id=${id}`)),
    catchError(this.handleError<Hero>(`getHero id=${id}`))
);


3
@ অজয় ​​আমি এই পৃষ্ঠাটি এবং এর সাথে একাধিক উল্লেখ পেয়েছি ব্যবহারসমূহ. যা rxjs পাইপ কি তা উত্তর দেয় না।
182764125216

উত্তর:


123

কৌণিক এবং আরএক্সজেএস এর ধারণাগুলি নিয়ে বিভ্রান্ত হবেন না

আমরা pipe()কৌনিক মধ্যে পাইপ ধারণা এবং আরএক্সজেএস মধ্যে ফাংশন আছে।

1) কৌণিকের পাইপ : একটি পাইপ ডেটা ইনপুট হিসাবে গ্রহণ করে এবং এটি পছন্দসই আউটপুট https://angular.io/guide/pines এ রূপান্তর করে

2) pipe()আরএক্সজেএসে ফাংশন : আপনি অপারেটরদের একসাথে লিঙ্ক করতে পাইপ ব্যবহার করতে পারেন। পাইপ আপনাকে একক ফাংশনে একাধিক ফাংশন একত্রিত করতে দেয়।

pipe()ফাংশন তার আর্গুমেন্ট হিসাবে ফাংশন আপনি একত্রিত করতে চান লাগে, এবং একটি নতুন ফাংশন যা, যখন মৃত্যুদন্ড কার্যকর, ক্রমানুসারে ক্ষান্ত ফাংশন চালায় ফেরৎ।
https://angular.io/guide/rx-library (এই URL টিতে পাইপের সন্ধান করুন, আপনি এটির সন্ধান করতে পারেন)

সুতরাং আপনার প্রশ্ন অনুসারে, আপনি pipe()RxJS এ ফাংশন উল্লেখ করছেন


43

আপনি যে পাইপগুলির শুরুতে বর্ণনার বিষয়ে কথা বলছেন সেগুলি পাইপ থেকে আলাদা উদাহরণ হিসাবে আপনি দেখিয়েছেন।

কৌণিক (2 | 4 | 5) তে পাইপগুলি যেমনটি বলেছিলেন তেমন ফর্ম্যাট করতে ব্যবহৃত হয়। আমার মনে হয় আপনার কৌণিকগুলিতে পাইপের একটি প্রাথমিক ধারণা আছে, আপনি এই লিঙ্কটি থেকে এ সম্পর্কে আরও শিখতে পারেন - কৌণিক পাইপ ডক

pipe()উদাহরণস্বরূপ দেখানো হয়েছে pipe()পদ্ধতি RxJS 5.5 (RxJS সব কৌণিক অ্যাপসের জন্য ডিফল্ট)। ইন Angular5 সব RxJS অপারেটার একক আমদানি ব্যবহার আমদানি করা যায় এবং তারা এখন পাইপ পদ্ধতি ব্যবহার করে মিলিত হয়।

tap()- আরএক্সজেএস ট্যাপ অপারেটর পর্যবেক্ষণযোগ্য মানটি দেখবে এবং সেই মানটি দিয়ে কিছু করবে। অন্য কথায়, একটি সফল এপিআই অনুরোধের পরে, tap()অপারেটর প্রতিক্রিয়াটির সাথে আপনি যে কোনও কার্য সম্পাদন করতে চান তা করবে। উদাহরণস্বরূপ, এটি কেবল সেই স্ট্রিংটি লগ করবে।

catchError()- ক্যাচআরারর ঠিক একই কাজ করে তবে ত্রুটির প্রতিক্রিয়া সহ। আপনি যদি কোনও ত্রুটি নিক্ষেপ করতে চান বা কোনও ত্রুটি পেলে কিছু ফাংশন কল করতে চান, আপনি এটি এখানে করতে পারেন। উদাহরণস্বরূপ, এটি কল করবে handleError()এবং তার ভিতরে এটি কেবল স্ট্রিংটিতে লগ করবে।


"আপনি যে পাইপগুলির সাথে শুরুর বিবরণে কথা বলছেন ..." -> না তারা আলাদা নয়। ; আমার মতে তাঁর প্রশ্নটি পুরোপুরি পরিষ্কার ছিল (এতটা সম্ভব যা নিয়ে কোনও সংশয় নেই)। প্রোগ্রামিংয়ে প্রচুর ধারণা রয়েছে যেগুলিকে "পাইপ" বলা যেতে পারে, তবে তার বিবরণে খুব নির্দিষ্ট হয়ে ও "পাইপ ফাংশন" বলে তিনি সম্ভাব্য সমস্ত বিভ্রান্তি দূর করেছেন। আমি জানি না যে কীভাবে তিনি তাদের ডাকতে পারতেন।
বিভিডিবি

1
"পাইপগুলি টেমপ্লেটে ডেটা (ফর্ম্যাট) রূপান্তর করার জন্য ফিল্টার" " এখানে তিনি কৌণিক 2+ তে পাইপের কথা বলছিলেন, যেমন তারিখের মতো, অ্যাঙ্গুলারে সরবরাহ করা বড় হাতের পাইপ (যা তিনি যা বলেছেন ঠিক তেমনটি করে যা টেমপ্লেটে ফর্ম্যাট ডেটা বলে) এবং বর্ণনায় তিনি আরএক্সজেএস পাইপ ফাংশনের উদাহরণ দেখিয়েছেন । হ্যাঁ এই 2 টি জিনিস সম্পূর্ণ আলাদা।
ভরগাভজি

আমি এটা ফিরিয়ে নিই, মেয়া কুলপা। এই শব্দগুচ্ছ উপেক্ষা। আমি আশা করি আমি -1 পূর্বাবস্থায় ফেরাতে পারি। :( তবে এটি দুর্ভাগ্যক্রমে লক হয়েছে।
bvdb

এটি কোনও বড় বিষয় নয়। খুশি যে এটি সমস্ত সন্দেহ মুছে ফেলে। চিয়ার্স :-)
ভরগভজি

15

আরএক্সজেএস অপারেটরগুলি হল ফাংশন যা সংগ্রহের পরিশীলিত হেরফের সক্ষম করতে পর্যবেক্ষণযোগ্য ভিত্তিতে তৈরি করে।

উদাহরণস্বরূপ, RxJS যেমন অপারেটার সংজ্ঞায়িত map(), filter(), concat(), এবং flatMap()

অপারেটরদের একসাথে লিঙ্ক করতে আপনি পাইপ ব্যবহার করতে পারেন। পাইপ আপনাকে একক ফাংশনে একাধিক ফাংশন একত্রিত করতে দেয়।

pipe()ফাংশন তার আর্গুমেন্ট হিসাবে ফাংশন আপনি একত্রিত করতে চান লাগে, এবং একটি নতুন ফাংশন যা, যখন মৃত্যুদন্ড কার্যকর, ক্রমানুসারে ক্ষান্ত ফাংশন চালায় ফেরৎ।


আপনার কি উদাহরণ আছে?
lofihelsinki

নীচের উদাহরণে আমরা ফিল্টার এবং মানচিত্রের ফাংশনটি পাইপ করেছি। এখন উভয় ফাংশন উদাহরণ হিসাবে দেওয়া ক্রমানুসারে কার্যকর করা হবে। প্রথমে ফলাফলটি ফিল্টার করবে এবং তারপরে ফলাফলগুলি ম্যাপ করবে। আশা করি এটি সাহায্য করবে। 'আরএক্সজেএস / অপারেটর' থেকে {ফিল্টার, মানচিত্র import আমদানি করুন; কন্স স্কয়ারওড = এর (1, 2, 3, 4, 5)। পাইপ (ফিল্টার (n => n% 2! == 0), মানচিত্র (n => n * n)); // মান পেতে সাবস্ক্রাইব সাবস্ক্রাইব.সউসক্রাইব (x => কনসোল.লগ (এক্স));
মনোজ

সত্যিই দুর্দান্ত উত্তর, তবে দুর্ভাগ্যজনক যে খুব কম সংখ্যক আপ-ভোট। আমার কাছ থেকে +1
অশোক কুমার

7

আপনাকে অফিসিয়াল রিএ্যাকটিভএক্স ডকুমেন্টেশনের দিকে নজর দিতে হবে: https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md

এটি আরএক্সজেএস: পাইপিং সম্পর্কে একটি ভাল নিবন্ধ: https://blog.hackages.io/rxjs-5-5-piping-all-the-things-9d469d1b3f44

সংক্ষেপে। পাইপ () একাধিক পাইপযোগ্য অপারেটরগুলিকে শিকল দেওয়ার অনুমতি দেয়।

5.5 সংস্করণে শুরু করে আরএক্সজেএস "পাইপযোগ্য অপারেটরগুলি" প্রেরণ করেছে এবং কিছু অপারেটরের নাম পরিবর্তন করেছে:

do -> tap
catch -> catchError
switch -> switchAll
finally -> finalize

6

দুটি খুব আলাদা ধরণের পাইপ কৌণিক - পাইপ এবং আরএক্সজেএস - পাইপ

কৌণিক-পাইপ

একটি পাইপ ডেটা ইনপুট হিসাবে গ্রহণ করে এবং এটি একটি পছন্দসই আউটপুটে রূপান্তর করে। এই পৃষ্ঠায়, আপনি উপাদানগুলির জন্মদিনের সম্পত্তিটিকে মানব-বান্ধব তারিখে রূপান্তর করতে পাইপ ব্যবহার করবেন।

import { Component } from '@angular/core';

@Component({
  selector: 'app-hero-birthday',
  template: `<p>The hero's birthday is {{ birthday | date }}</p>`
})
export class HeroBirthdayComponent {
  birthday = new Date(1988, 3, 15); // April 15, 1988
}

আরএক্সজেএস - পাইপ

পর্যবেক্ষণযোগ্য অপারেটরগুলি পাইপযোগ্য অপারেটর হিসাবে পরিচিত একটি পাইপ পদ্ধতি ব্যবহার করে তৈরি করা হয়। এখানে একটি উদাহরণ।

import {Observable, range} from 'rxjs';
import {map, filter} from 'rxjs/operators';

const source$: Observable<number> = range(0, 10);

source$.pipe(
    map(x => x * 2),
    filter(x => x % 3 === 0)
).subscribe(x => console.log(x));

কনসোলে এর জন্য আউটপুট নিম্নলিখিত হবে:

0

6

12

18

পর্যবেক্ষণযোগ্য হ'ল যে কোনও ভেরিয়েবলের জন্য, আমরা এক বা একাধিক অপারেটর ফাংশনে পাস করার জন্য .pip () পদ্ধতিটি ব্যবহার করতে পারি যা পর্যবেক্ষণযোগ্য সংগ্রহের প্রতিটি আইটেমটিতে কাজ করতে পারে এবং রূপান্তর করতে পারে।

সুতরাং এই উদাহরণটি প্রতিটি সংখ্যা 0 থেকে 10 এর পরিসীমাতে নেয় এবং এটি 2 দিয়ে গুণ করে Then তারপরে, ফিল্টারটি কেবলমাত্র বিজোড় সংখ্যাগুলিতে ফলাফল ফিল্টার করতে ফাংশন করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.