当前位置: 首页 > 知识库问答 >
问题:

如何用新的observable替换http observable?

孙化
2023-03-14

我想我根本不理解角2的rxjs可观测物的概念。

我创建了一个可观察属性,其他人可以订阅该属性并获取http调用结果的数据。

如果我想发出另一个http请求,可能需要修改一些参数以提取一些新数据,该怎么办?我是否要用这个新的可观察物替换可观察物?这是否破坏了我的订阅组件与前一个可观察组件的订阅?

共有1个答案

郎恺
2023-03-14

免责声明:我没有使用angular2,但我确实经常使用RxJS。

我可以说,典型的情况是,对于像http请求这样的单发事件,生成的Observable只能从该请求中得到一个结果。如果要发出更多请求,则需要再次调用该方法。即

文件

$http.get('/people.json').map(res => res.json()).subscribe(people => this.people = people);

现在,如果您计划发出多个后续请求,那么通常您会使用其他事件(可能是用户事件或网络事件)触发呼叫,您甚至可以将其设置为每隔几秒钟定期运行一次。要不“断开链”,您需要使用一个flatMap(基本上是.map().merge())变体将结果展平为一个链。

例如,如果您有一个任意事件(注意语法可能会有一些变化,因为有几个版本的RxJS):

Rx.Observable.fromEvent($someButton, 'click')
             //Gather the parameters for the request
             .map(e => {id : 'abc123'})
             //Flatten each request into a single stream so the observer
             //never knows the difference 
             .flatMap(params => $http.get(`/people/${params.id}`), 
                      (params, res) => res.json())
             //Do your update here
             .subscribe(person => this.people[person.id] = person);
 类似资料:
  • 问题内容: 在是否有可能使用isomporphic取的,而不是Rx.DOM.ajax? 问题答案: (注意:来自RxJS v4 ,并且不能与需要RxJS v5的版本 一起使用。v5中的等效项是或) 确实可以使用以及其他任何AJAX API。虽然有些适应比其他容易! 该API返回a ,RxJS v5对此具有 内置支持 。该预期可观察到的最能消耗运营商承诺按原样(如,等)。但是通常您需要在将Rx运算符

  • 我的asp中有以下WebClient。net mvc web应用程序: 那么,有人可以建议我如何将它从WebClient更改为HttpClient吗?

  • 我对java还是新手。是否有办法获取已替换的新字符串? 输出: 期望的新输出: 我想得到输出字符串然后将替换为

  • 2) client().Extensions().Deployments().InNamespace(namespaceName).WithName(deploymentName).CreateOrReplace(deployment); 3) client().Extensions().Deployments().InNamespace(namespaceName).WithName(deplo

  • 问题内容: 我试图将字符串分成数组并替换为,但无法做到,我也尝试了String.replaceAll这样的东西。 我想提供一个通往JNI的路径,并且它只能以这种方式读取。 问题答案: 在这种情况下不要使用- 这是用正则表达式指定的,这意味着您需要更多的转义。这应该很好: 请注意,由于Java字符串文字中的原因,反斜杠加倍-因此此处涉及的 实际 字符串是“单反斜杠”和“双反斜杠”-而不是双倍和四倍。

  • 我有以下布局 一切正常,但我想用一个片段替换浏览器 这不是重新调整ViewPager的间距,我该怎么办???