1 ডায়রেক্ট এক্সিকিউশন / রূপান্তর
fromপূর্বে তৈরি প্রতিশ্রুতিটি পর্যবেক্ষণযোগ্যতে সরাসরি রূপান্তর করতে ব্যবহার করুন ।
import { from } from 'rxjs';
// getPromise() will only be called once
const observable$ = from(getPromise());
observable$এটি একটি উত্তপ্ত পর্যবেক্ষণযোগ্য হবে যা গ্রাহকদের প্রতিশ্রুতি মূল্য কার্যকরভাবে রিপ্লে করে।
প্রতিশ্রুতিবদ্ধ সংস্থা কার্যকর করা হচ্ছে বা পর্যবেক্ষণযোগ্য তৈরি করার সময় ইতিমধ্যে সমাধান করা হয়েছে। যদি অভ্যন্তরীণ প্রতিশ্রুতি সমাধান করা হয়ে থাকে তবে পর্যবেক্ষণযোগ্য কোনও নতুন গ্রাহক তাৎক্ষণিকভাবে এর মান পাবেন।
2 প্রতিটি সাবস্ক্রাইব উপর স্থগিত কার্যকর
deferএকটি পর্যবেক্ষণযোগ্য প্রতিশ্রুতি তৈরি এবং রূপান্তর স্থগিত করতে ইনপুট হিসাবে প্রতিশ্রুতি কারখানা ফাংশন সহ ব্যবহার করুন ।
import { defer } from 'rxjs';
// getPromise() will be called every time someone subscribes to the observable$
const observable$ = defer(() => getPromise());
observable$একটি ঠান্ডা পর্যবেক্ষণযোগ্য হবে ।
পার্থক্য fromহ'ল deferকোনও গ্রাহকের জন্য অপেক্ষা করে এবং তারপরে প্রদত্ত প্রতিশ্রুতি কারখানার ফাংশনটি কল করে একটি নতুন প্রতিশ্রুতি তৈরি করে। এটি কার্যকর যখন আপনি একটি পর্যবেক্ষণযোগ্য তৈরি করতে চান তবে অভ্যন্তরীণ প্রতিশ্রুতিটি এখনই কার্যকর করা উচিত নয়। অভ্যন্তরীণ প্রতিশ্রুতি কেবল তখনই কার্যকর করা হবে যখন কেউ পর্যবেক্ষণযোগ্যতে সাবস্ক্রাইব করে। প্রতিটি গ্রাহক তার নিজস্ব নতুন পর্যবেক্ষণযোগ্যও পাবেন।
3 অনেক অপারেটর সরাসরি প্রতিশ্রুতি গ্রহণ করেন
সর্বাধিক RxJS অপারেটার যে মেশা (যেমন merge, concat, forkJoin, combineLatest...) বা observables রুপান্তর (যেমন switchMap, mergeMap, concatMap, catchError...) প্রতিশ্রুতি সরাসরি গ্রহণ। আপনি যদি fromসেগুলির মধ্যে কোনও একটি ব্যবহার করেন তবে আপনাকে প্রথমে কোনও প্রতিশ্রুতি মোড়ানোর জন্য ব্যবহার করতে হবে না (তবে একটি শীতল পর্যবেক্ষণযোগ্য তৈরি করতে আপনার এখনও ব্যবহার করতে হতে পারে defer)।
// Execute two promises simultaneously
forkJoin(getPromise(1), getPromise(2)).pipe(
switchMap(([v1, v2]) => v1.getPromise(v2)) // map to nested Promise
)
আপনি যে অপারেটরটি ব্যবহার করছেন তা গ্রহণ করে বা না তা দেখতে ডকুমেন্টেশন বা বাস্তবায়ন পরীক্ষা করুন ।ObservableInputSubscribableOrPromise
type ObservableInput<T> = SubscribableOrPromise<T> | ArrayLike<T> | Iterable<T>;
// Note the PromiseLike ----------------------------------------------------v
type SubscribableOrPromise<T> = Subscribable<T> | Subscribable<never> | PromiseLike<T> | InteropObservable<T>;
fromএবং deferউদাহরণের মধ্যে পার্থক্য : https://stackblitz.com/edit/rxjs-6rb7vf
const getPromise = val => new Promise(resolve => {
console.log('Promise created for', val);
setTimeout(() => resolve(`Promise Resolved: ${val}`), 5000);
});
// the execution of getPromise('FROM') starts here, when you create the promise inside from
const fromPromise$ = from(getPromise('FROM'));
const deferPromise$ = defer(() => getPromise('DEFER'));
fromPromise$.subscribe(console.log);
// the execution of getPromise('DEFER') starts here, when you subscribe to deferPromise$
deferPromise$.subscribe(console.log);
fromপর্যবেক্ষণযোগ্য পদ্ধতিটি ফিরে আসছে তবে এটি সাবস্ক্রিপশনের মান হিসাবে প্রতিশ্রুতি প্রেরণ করছে। :(