javascript - Observable toPromise() 获取通过 next() 发送的所有数据

标签 javascript typescript rxjs observable es6-promise

我有一个使用 subscriber.next(value) 发送数据的 observable (rxjs)。 如果通过 toPromise() 方法将 observable 转换为 promise,如何获取这些数据?这可能吗?或者是否只能通过可观察对象的完整方法获取传递的数据。 也许管道中有选项/方法,在转换为 promise 从 next() 获取所有数据之前,将其作为 then() 方法的数据字段中的数组 promise 。

getObservable().toPromise().then(data => {
  // data should contain all data sent from observable.next()
  console.log('Complete: ', data);
}, error => {
  console.log('Error: ', error);
});
  • 当前行为(在这种情况下是预期但不想要的):
    data 包含 observable.complete() 的数据。

  • 想要的行为:
    data 包含所有 observable.next() 的数组。 这应该通过选项或管道启用。

Observable.range() 示例:

let observer = Rx.Observable.range(1,5).toPromise().then(data => {
  console.log('Completed: ', data);
}, error => {
  console.log('Error: ', error);
});

输出:

Completed: 5

通缉:

Completed: [1, 2, 3, 4, 5]

我不确定这是否可能。

最佳答案

Reduce在你做出 promise 之前

const source = Rx.Observable.of(1, 2, 3, 4);
const example = source.reduce((acc,val) => acc.concat(val), []);

example.toPromise().then((data) => {
    alert(data);
});

关于javascript - Observable toPromise() 获取通过 next() 发送的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51138917/

相关文章:

javascript - 如何在不创建数组的情况下使用 NgFor 来生成矩阵 UI 模式

angular - new Observable(...) 和 Rx.Observable.create(...) 的区别?

angular - RxJS distinctUntilChanged - 对象比较

javascript - 如果 Controller 失败,如何在 View 中显示错误? ASP.NET MVC

javascript - 我应该使用 [innerHTML] 还是通常的方式(Angular 2)

javascript - 两个文本字段,只需填写一个(任一)

javascript - Bootstrap 3列在加载页面时根据窗口大小更改大小

node.js - 根据环境使用凭据初始化 Admin SDK

node.js - 任何人都可以引导我朝着正确的方向让这个 Azure Functions 输出 "Cannot Find Module ' @azure/functions' 吗?

angular - 如何将可观察值传递给@Input() Angular 4