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 प्रोटोटाइप को बदल दिया गया है।







es6-promise