Return Observable<number> 来自另一个 Observable,对 Observable<[]> 进行计算
Return Observable<number> from another observable with a computation over a Observable<[]>
我正在尝试 return 从数组上的另一个可观察对象到单个数字的可观察对象。我使用数组查找两个值并进行计算。目前我正在使用一个很好的 Promise,但根据我自己的理解,我想知道它是如何完成的。
如何将以下代码转换为 return 一个 Promise
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));
});
}
我正在尝试 return 从数组上的另一个可观察对象到单个数字的可观察对象。我使用数组查找两个值并进行计算。目前我正在使用一个很好的 Promise,但根据我自己的理解,我想知道它是如何完成的。
如何将以下代码转换为 return 一个 Promise
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));
});
}