【问题标题】:RxJS use response only from last promiseRxJS 仅使用来自最后一个承诺的响应
【发布时间】:2015-12-26 21:03:17
【问题描述】:

我怎样才能只使用最后创建的承诺,取消(或不使用)所有先前的承诺?

该函数可以无限次运行。

rx.Observable.fromPromise(listingFactory.list())
            .flatMapLatest((e: any) => {
                return e;
            })
            .subscribe((e: any) => {
                console.log(e);
            });

【问题讨论】:

    标签: javascript promise rxjs


    【解决方案1】:

    如果你的 listingFactory.list() 返回一个可观察的承诺,那么你可以这样写:

    listingFactory.list()
            .flatMapLatest((promise: any) => {
             return promise;
             })
            .subscribe((resolved_value: any) => {                     
              console.log(resolved_value);
            }, (error: any) => {
                console.log(error)});
    

    flatMapLatest 将等待最新发出的 Promise 解决,丢弃之前的 Promise。请注意,这些承诺不能被“取消”,但它们的解决值(或拒绝)将被忽略。另请注意,flatMapLatest 允许您返回可观察的、承诺的或可迭代的。在这种特殊情况下,我们可以直接返回 Promise,而无需使用 .fromPromise 运算符。此外,fromPromise 运算符只需要一个 Promise 作为参数,而不是它们的列表。

    那么listingFactory.list() 的类型是什么?你如何创建你的承诺来源?我误解你的意图了吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 2016-06-22
      • 2015-07-08
      • 2016-05-16
      相关资源
      最近更新 更多