返回Observable 从另一个可观测值与一个可观测的计算<[]>

返回Observable <number>从另一个可观测值与一个可观测的计算<[]>

问题描述:

我想从一个数组上的另一个observable返回一个Observable。我使用该数组查找两个值并进行计算。目前我正在使用一个很好的承诺,但为了我自己的理解,我想知道它是如何完成的。返回Observable <number>从另一个可观测值与一个可观测的计算<[]>

如何转换下面的代码返回一个无极

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(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)); 

     }); 

     }