首页 > 解决方案 > 将新的 rxjs observable 合并到现有的订阅 observable 中

问题描述

我有一个已经订阅的 rxjs observable:

const o = new rxjs.Subject();
o.subscribe( (v) => console.log("value: " + v);

由于一些不相关的事件,例如用户单击按钮,我需要从服务器获取数据,并将该数据放入现有的 observableo中。使用 axios,我有这样的事情:

const aPromise = axios.get("someurl...")

然后我执行以下操作:

const secondObservable = rxjs.of(aPromise)
                             .subscribe( (response) => o.next(response.data) )

我的问题是是否有更好的方法将响应数据放入现有的已经订阅的 observable 中,也许使用运算符?

标签: rxjs

解决方案


您可以将调用的结果直接传递给您的 observable。

const axios = {
  get: url => Promise.resolve('some value')
};

const o = new rxjs.Subject();
o.subscribe(v => { console.log("value: " + v); });

axios.get('url').then(data => { o.next(data); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.4.0/rxjs.umd.min.js"></script>


推荐阅读