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
)
चेक प्रलेखन या कार्यान्वयन ऑपरेटर आप उपयोग कर रहे स्वीकार करता है देखने के लिए ObservableInputया SubscribableOrPromise।
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विधि अवलोकन योग्य है लेकिन यह सदस्यता के मूल्य के रूप में वादा भेज रही है। :(