এখানে আরও একটি, তবে আমি আরও সোজাসাপ্টা এবং স্বজ্ঞাত বোধ করছি (বা যদি আপনি প্রতিশ্রুতিতে ব্যবহার হন তবে কমপক্ষে প্রাকৃতিক), পদ্ধতির কাছে। মূলত, আপনি 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!");
}
);
আপনি যদি কনসোলটি দেখেন তবে উপরের উদাহরণটি মুদ্রণ করবে:
ঘ
।
সম্পন্ন!