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
विधि अवलोकन योग्य है लेकिन यह सदस्यता के मूल्य के रूप में वादा भेज रही है। :(