我有一个函数,可以选择设置一个标题与从localStorage
检索的数据。 localStorage
操作返回一个承诺,我可以变成一个Observable。一旦标头设置(或没有),我想打一个http请求并返回可观察到的结果:等待观察者完成,开始另一个,并订阅其输出
let startObs;
if (useHeaders) {
startObs = Observable.fromPromise(this.getStoredHeaders());
}
else {
startObs = Observable.empty();
}
// wait for startObs here
return this.http.get(url, headers);
基本上我想等startObs
完成,然后返回http.get
观察到。我曾尝试使用类似startObs.concat(this.http.get())
或startObs.switch(this.http.get())
的东西,但是这会从可观察源和http.get
可观察值发出。我只想想要发出的http.get
可观察。
有没有什么办法可以只等待链中的最后一个观察值,而等待先前的观察值才能完成?
你在哪里订阅数据?更新到 – Aravind
这是异步的,这是可观察到的整点:)所以你将无法按照你想要的方式完成。你应该订阅和做你想要的订阅,但订阅服务也不是一个好主意。您应该简单地创建可观察链,并从组件订阅它,例如 – Maxime
您可以使用concat()然后使用last()。 http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-last –