RxJS .toPromise仅返回一个值

时间:2018-06-22 00:45:54

标签: rxjs

我正在使用RxJS 6.2.1,并且正在尝试将可观察对象转换为Promise

如果我使用订阅创建一个可观察的简单范围,我将获得随着时间推移发出的值。

import { range } from 'rxjs'

const source$ = range(0, 10);
source$
  .subscribe(
    x => console.log(x),
    err => console.log(err),
    () => console.log('complete')
  )

但是我如何将整个事情转换成承诺?我尝试过.toPromise(),但只返回了一个值“ 9”

import { range } from 'rxjs'

const source$ = range(0, 10);
source$
  .toPromise()
  .then(x => console.log('x', x)) . //only get back "9"
  .catch(err => console.log('err', err))

我该如何重写它以便从0到9取回一个数组?

1 个答案:

答案 0 :(得分:1)

这会将可观察流中的所有值转换为数组,并将该数组解析为承诺值。

of('a','b','c','d').pipe(
  toArray()
).toPromise().then(val => console.log(val))