javascript - RxJS 仅使用最后一个 promise 的响应

标签 javascript promise rxjs

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

该函数可以无限次运行。

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

最佳答案

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

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

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

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

关于javascript - RxJS 仅使用最后一个 promise 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34475220/

相关文章:

javascript - 无法使用 Nodejs 和 Sequelize 读取未定义的属性 'findOne'

node.js - 我正在导入一个异步函数并尝试使用它

angular - 观察者函数中的异步等待

javascript - 如何构造rxjs代码

unit-testing - 如何模拟 rxjs 6 webSocket 函数进行单元测试?

javascript - 通过按下拉按钮更改段落内的文本

javascript - XMLHttpRequest 问题 : Cross origin requests are only supported for protocol schemes: http, 数据、chrome、chrome 扩展、https

javascript - emacs缓冲区中的node.js没有进程——更好的系统在emacs中交互式执行js

javascript - Promise 按顺序运行嵌套的 Promise 并在第一次拒绝时解决

javascript - 在 Ember Handlebars 模板中呈现已解决的 promise 值