【问题标题】:RxJS alternative to doing a Promise.resolve?RxJS 替代做 Promise.resolve?
【发布时间】:2016-01-05 16:29:22
【问题描述】:

RxJS 中 Promise.resolve 的等价物是什么?我知道我可以做到Observable.fromPromise(Promise.resolve(someValue));,但必须有更清洁的方式。

【问题讨论】:

  • 要在 alexpods 上添加答案,observableobserver 的 Rx 文档真的很有启发性。

标签: angular rxjs


【解决方案1】:

Observable.of 是您要查找的内容(请参阅this plunk):

// You might need to add this import in RxJS versions earlier than 5
import 'rxjs/add/observable/fromArray';

// ... or this line in RxJS 5+
import 'rxjs/add/observable/of';

if (me.groups) {
  return Observable.of(me.groups);
}

【讨论】:

  • 令我非常困惑的是,有 2 个库同名:github.com/Reactive-Extensions/RxJSgithub.com/ReactiveX/RxJS Microsoft 变体中似乎存在“of”方法,但其他变体中没有.我正在使用的版本(与 angular.io 的快速入门中使用的版本相同)没有 this of 运算符。
  • @Davy angular2 使用github.com/ReactiveX/RxJS 其 5.0 版本的 rxjs(完全重写)。正如您可以在文档中找到的那样,“此重写旨在具有更好的性能、更好的模块化、更好的可调试调用堆栈,同时保持大部分向后兼容,并进行一些减少 API 表面的重大更改。” + 他们想关注ES7 observable spec
  • 1.尝试import {Observable} from 'rxjs';
  • 2.尝试添加import 'rxjs/add/observable/fromArray;
  • 像这样从 Angular 6 导入:import { of } from 'rxjs';。您可以在此线程中阅读更多内容:stackoverflow.com/questions/36568388
【解决方案2】:

Promise.resolve(),如果给定一个 Promise,将返回一个相同的 Promise。它本质上是无操作的,但它是确保您拥有的任何“东西”都被承诺包装的有用方法。

Observable.of() 相比之下,如果给定一个 observable,则不是空操作;它将返回一个包含原始 observable 的 observable。

为了of()可以和Promise.resolve的这个方面相媲美,这里的输出:

rxjs.of( rxjs.of(1,2,3) ).subscribe( { next: v => console.log(v) } )

……应该是 1、2、3,但它是 3 个 observables。

不幸的是,我不知道有哪个 RxJS 运算符可以做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2018-03-06
    • 2021-11-30
    • 1970-01-01
    • 2016-08-30
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多