অনুরূপ একটি খুঁজছেন উত্তর downvoted যায়নি। তবে আমি মনে করি যে আমি এখানে সীমিত ক্ষেত্রে পরামর্শ দিচ্ছি তা আমি ন্যায়সঙ্গত করতে পারি।
যদিও এটি সত্য যে কোনও পর্যবেক্ষণযোগ্যের বর্তমান মান নেই, তবে প্রায়শই এটির সাথে সাথে উপলব্ধ মূল্য পাওয়া যায় । উদাহরণস্বরূপ রিডেক্স / ফ্লাক্স / আকিতা স্টোর সহ আপনি বেশ কয়েকটি পর্যবেক্ষণযোগ্যদের উপর ভিত্তি করে কোনও কেন্দ্রীয় স্টোর থেকে ডেটা অনুরোধ করতে পারেন এবং সেই মানটি অবিলম্বে উপলব্ধ হবে।
যদি এটি হয় তবে আপনি যখন subscribe
, মানটি অবিলম্বে ফিরে আসবে।
সুতরাং আসুন আমরা আপনাকে একটি পরিষেবায় কল করেছি এবং সমাপ্তির পরে আপনি আপনার দোকান থেকে কোনও কিছুর সর্বশেষতম মূল্য পেতে চান, সম্ভবত এটি নির্গত হয় না :
আপনি এটি করার চেষ্টা করতে পারেন (এবং আপনার যতটা সম্ভব জিনিসগুলি পাইপের অভ্যন্তরে রাখা উচিত):
serviceCallResponse$.pipe(withLatestFrom(store$.select(x => x.customer)))
.subscribe(([ serviceCallResponse, customer] => {
// we have serviceCallResponse and customer
});
এটির সাথে সমস্যাটি হ'ল এটি পর্যবেক্ষণযোগ্য না হওয়া অবধি অবধি অবরুদ্ধ হবে যা সম্ভবত কখনও হতে পারে না।
আমি সম্প্রতি নিজেকে একটি পর্যবেক্ষণযোগ্য মূল্যায়ন করার প্রয়োজন খুঁজে পেয়েছিলাম কেবল তখনই যখন কোনও মান পাওয়া যায় এবং আরও গুরুত্বপূর্ণভাবে এটি সনাক্ত না করতে পেরে আমার প্রয়োজন হবে। আমি এটি করে শেষ করেছি:
serviceCallResponse$.pipe()
.subscribe(serviceCallResponse => {
// immediately try to subscribe to get the 'available' value
// note: immediately unsubscribe afterward to 'cancel' if needed
let customer = undefined;
// whatever the secondary observable is
const secondary$ = store$.select(x => x.customer);
// subscribe to it, and assign to closure scope
sub = secondary$.pipe(take(1)).subscribe(_customer => customer = _customer);
sub.unsubscribe();
// if there's a delay or customer isn't available the value won't have been set before we get here
if (customer === undefined)
{
// handle, or ignore as needed
return throwError('Customer was not immediately available');
}
});
নোট করুন যে উপরের সকলের জন্য আমি subscribe
মান পেতে ব্যবহার করছি (যেমন @ বেন আলোচনা করেছেন)। .value
সম্পত্তি ব্যবহার করছি না , এমনকি যদি আমার একটি ছিল BehaviorSubject
।