Angular 可观察的回报<;数量>;从另一个可观测到的,并对一个可观测到的<;[]>;

Angular 可观察的回报<;数量>;从另一个可观测到的,并对一个可观测到的<;[]>;,angular,observable,angular-promise,Angular,Observable,Angular Promise,我试图从数组中的另一个可观测值返回单个数字上的一个可观测值。我使用数组查找两个值并进行计算。目前,我正在使用一个承诺,这是很好的,但我自己的理解,我想知道它是如何做到的 如何转换以下返回承诺的代码 convertToCurrency(fromCurrency: string, toCurrency: string) { return new Promise((resolve, reject) => { this.getQuotes()

我试图从数组中的另一个可观测值返回单个数字上的一个可观测值。我使用数组查找两个值并进行计算。目前,我正在使用一个承诺,这是很好的,但我自己的理解,我想知道它是如何做到的

如何转换以下返回承诺的代码

convertToCurrency(fromCurrency: string, toCurrency: string) {

        return new Promise((resolve, reject) => {

          this.getQuotes()
            .subscribe(quotes =>  {

              let usdFrom = quotes.filter(val => {
                return val.code.substring(3, 6) == fromCurrency;
              })[0].quote;

              let usdTo = quotes.filter(val => {
                return val.code.substring(3, 6) == toCurrency;
              })[0].quote;

              let converted = usdTo / usdFrom;

              resolve(converted);

            }, error => reject());

        });

      }
为此:

convertToCurrency(fromCurrency: string, toCurrency: string): Observable<number> {
...
}
convertToCurrency(从currency:string到currency:string):可观察{
...
}

这几乎和你的承诺一样

convertToCurrency(fromCurrency: string, toCurrency: string): Observable<number> {

        return new Observable<number>(observer => {

          this.getQuotes()
            .subscribe(quotes =>  {

              let usdFrom = quotes.filter(val => {
                return val.code.substring(3, 6) == fromCurrency;
              })[0].quote;

              let usdTo = quotes.filter(val => {
                return val.code.substring(3, 6) == toCurrency;
              })[0].quote;

              let converted = usdTo / usdFrom;

              observer.next(converted);

            }, error => observer.error(error));

        });

      }
convertToCurrency(从currency:string到currency:string):可观察{
返回新的可观察对象(观察者=>{
this.getQuotes()
.订阅(报价=>{
让usdFrom=quotes.filter(val=>{
返回值代码子字符串(3,6)=fromCurrency;
})[0]。引用;
让usdTo=quotes.filter(val=>{
返回值代码子串(3,6)=toCurrency;
})[0]。引用;
let converted=usdTo/usdFrom;
观察员:下一个(已转换);
},error=>observer.error(error));
});
}