angular - fromPromise ऑब्जर्वेबल टाइप पर मौजूद नहीं है
rxjs observable (2)
Rxjs का उपयोग करते हुए कोणीय 2 में मैं एक प्रॉमिस को ऑब्जर्वेबल में बदलने की कोशिश कर रहा था।
जैसा कि कई ऑनलाइन गाइडों ने दिखाया है कि मैंने
fromPromise
पर
fromPromise
उपयोग किया है।
जो त्रुटि फेंकता है:
Property 'fromPromise' does not exist on type 'typeof Observable'.
अवलोकन योग्य आयात किया गया था:
import { Observable } from "rxjs/Observable";
अन्य ऑपरेटरों की तरह त्रुटि से परिणाम आयात करने की कोशिश करने में त्रुटि होती है:
import 'rxjs/add/operator/fromPromise';
यहां तक कि अगर मैं टाइपस्क्रिप्ट त्रुटि को दबाता हूं तो भी यह त्रुटि का परिणाम है:
(<any>Observable).fromPromise
त्रुटि:
Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_Observable__.Observable.fromPromise is not a function
Rxjs रेपो पर कुछ इसी तरह के मुद्दे की सूचना दी गई थी, लेकिन वहां भी कोई समाधान नहीं है।
जैसे कि जोता ने 'से ’क्या उत्तर दिया है।
आप यहाँ से संदर्भ पा सकते हैं
https://www.learnrxjs.io/operators/creation/from.html
हालाँकि, यदि आप 'प्रॉमिस टू ऑब्जर्वेबल' को निर्दिष्ट करना चाहते हैं, तो आप नीचे दिए गए 'फ्रॉम प्रॉमिस' का उपयोग कर सकते हैं।
import { from as fromPromise, Observable} from 'rxjs';
...
private getObservable(): Observable<any> {
return fromPromise(this.promise);
}
private getPromise() {
this.promise = new Promise((resolve, reject) => {
this.service.getPromise()
.then(response => {
// do sth
resolve(response);
});
});
}
अद्यतन करें:
rxjs
6.0.0-beta.3 के रूप में, ऑपरेटरों और पर्यवेक्षित रचनाकारों को
rxjs
से आयात किया जाना चाहिए।
इसके अलावा,
fromPromise
अब सार्वजनिक API का हिस्सा नहीं है और इसके विधि
from
लिपटा हुआ है।
टी एल; डॉ;
अद्यतन करें
Rxjs 6.0.0 उपयोग के लिए:
import { from } from 'rxjs';
var observableFromPromise = from(promiseSrc);
अद्यतन करें:
Rxjs 5.5.x
में
rxjs
करने
योग्य ऑपरेटरों
की रिहाई के बाद, बंदर पैच दृष्टिकोण दृढ़ता से हतोत्साहित किया जाता है।
स्थिर विधि विकल्प का उपयोग करने पर विचार करें।
मूल उत्तर
rxjs
रूप में,
fromPromise
को एक स्थिर विधि के रूप में इस्तेमाल किया जा सकता है या
fromPromise
प्रोटोटाइप में पैच किया जा सकता है।
पहले के लिए, आप निम्न कार्य कर सकते हैं:
import { fromPromise } from 'rxjs/observable/fromPromise';
var observableFromPromise = fromPromise(promiseSrc);
इस दृष्टिकोण के बारे में अधिक जानकारी here
दूसरा करने के लिए, आपको अपना आयात विवरण बदलना होगा:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromPromise';
var observableFromPromise = Observable.fromPromise(promiseSrc);
इस दृष्टिकोण के बारे में अधिक जानकारी here
व्यक्तिगत रूप से मैं पहले एक की सिफारिश करूंगा, यह देखते हुए कि 2 दृष्टिकोण मूल रूप से 1rst है, इस अंतर के साथ कि
Observable
प्रोटोटाइप को बदल दिया गया है।