এখানে আরও একটি, তবে আমি আরও সোজাসাপ্টা এবং স্বজ্ঞাত বোধ করছি (বা যদি আপনি প্রতিশ্রুতিতে ব্যবহার হন তবে কমপক্ষে প্রাকৃতিক), পদ্ধতির কাছে। মূলত, আপনি Observable.create()
মোড়ানোর জন্য one
এবং two
একক পর্যবেক্ষণযোগ্য হিসাবে একটি পর্যবেক্ষণযোগ্য তৈরি করেন। এটি কীভাবে Promise.all()
কাজ করতে পারে তার সাথে খুব মিল ।
var first = someObservable.take(1);
var second = Observable.create((observer) => {
return first.subscribe(
function onNext(value) {
},
function onError(error) {
observer.error(error);
},
function onComplete() {
someOtherObservable.take(1).subscribe(
function onNext(value) {
observer.next(value);
},
function onError(error) {
observer.error(error);
},
function onComplete() {
observer.complete();
}
);
}
);
});
তো, এখানে কি চলছে? প্রথমত, আমরা একটি নতুন পর্যবেক্ষণযোগ্য তৈরি করি। Observable.create()
যথাযথভাবে নামকরণ করা ফাংশনটি onSubscription
পর্যবেক্ষককে (আপনি যে পরামিতিগুলি দিয়েছিলেন সেগুলি দিয়ে তৈরি subscribe()
) পাস করা হয় , যা একটি নতুন প্রতিশ্রুতি তৈরির সময় অনুরূপ resolve
এবং reject
একক বস্তুর সাথে মিলিত হয়। এইভাবেই আমরা যাদুটিকে কাজ করি।
ইন onSubscription
, আমরা প্রথম পর্যবেক্ষণযোগ্য সাবস্ক্রাইব (উপরের উদাহরণে, এটি বলা হয়েছিল one
)। আমরা কীভাবে পরিচালনা করি next
এবং error
আপনার উপর নির্ভর করে তবে আমার নমুনায় প্রদত্ত ডিফল্টটি সাধারণত বলার উপযুক্ত হওয়া উচিত। যাইহোক, আমরা যখন complete
ইভেন্টটি পাই , যার অর্থ one
এখন সম্পন্ন হয়েছে, আমরা পরবর্তী পর্যবেক্ষণে সাবস্ক্রাইব করতে পারি; এর মাধ্যমে প্রথমটি সম্পূর্ণ হওয়ার পরে দ্বিতীয় পর্যবেক্ষণযোগ্যকে গুলি চালানো।
দ্বিতীয় পর্যবেক্ষনের জন্য প্রদত্ত উদাহরণ পর্যবেক্ষক মোটামুটি সহজ। মূলত, second
এখন আপনি two
ওপি-তে যেমন কাজ করবেন বলে আশা করেন তার মতো কাজ করে। আরও সুনির্দিষ্টভাবে, কোনও ত্রুটি নেই বলে ধরে নিয়ে second
প্রথম someOtherObservable
(এবং কারণ take(1)
) দ্বারা নির্গত প্রথম এবং কেবলমাত্র প্রথম মানটি নির্গত হবে complete
উদাহরণ
এখানে একটি সম্পূর্ণ, কার্যকারী উদাহরণ আপনি যদি আমার জীবনে বাস্তব জীবনে কাজ করতে দেখতে চান তবে আপনি অনুলিপি / পেস্ট করতে পারেন:
var someObservable = Observable.from([1, 2, 3, 4, 5]);
var someOtherObservable = Observable.from([6, 7, 8, 9]);
var first = someObservable.take(1);
var second = Observable.create((observer) => {
return first.subscribe(
function onNext(value) {
observer.next(value);
},
function onError(error) {
observer.error(error);
},
function onComplete() {
someOtherObservable.take(1).subscribe(
function onNext(value) {
observer.next(value);
},
function onError(error) {
observer.error(error);
},
function onComplete() {
observer.complete();
}
);
}
);
}).subscribe(
function onNext(value) {
console.log(value);
},
function onError(error) {
console.error(error);
},
function onComplete() {
console.log("Done!");
}
);
আপনি যদি কনসোলটি দেখেন তবে উপরের উদাহরণটি মুদ্রণ করবে:
ঘ
।
সম্পন্ন!