我有一个有角度的5网站,它使用了一个宁静的wcf网络服务。反过来,Web服务与业务对象交互,这些业务对象与数据库通信。我正在使用@ angular / common / http模块将Web服务用于一个可观察对象,然后在网页上呈现。到目前为止一切都很好。
现在,我也通过网络服务更新数据库,这也很好。
但是,它有点慢,我希望能够直接和更新Web服务调用同时更新Observable,以便网站不必等待数据通过Web服务,通过极其缓慢的企业资源规划业务对象,到数据库,然后返回到Observable对象,通过异步管道更新屏幕。
所以,我想,为什么不用BehaviorSubjects替换Observables?然后,我可以在BehaviorSubject上使用“next”方法快速更新页面。
但是,当我尝试那个......
select * into ForMSDB..tbl_SecurityNamespace
from Tfs_configuration;
我收到此错误...
#standardSQL
with table1 as(
select "America" as country_name union all
select "Germany" as country_name union all
select "England" as country_name union all
select "Nauru" as country_name union all
select "Brunei" as country_name union all
select "Kiribati" as country_name union all
select "Djibouti" as country_name union all
select "Malta" as country_name
)
select * from table1
现在,这个错误是有道理的,但它让我退后一步,想知道:实现目标的最佳途径是什么?
答案 0 :(得分:1)
您想要一个主题,它允许您将客户端更新注入到流中,并且您希望将此主题与来自服务器的流数据的observable合并。
这样的事情:
private clientStream$ : Subject<ICartonTrackDetail[]>;
public cartons$ : Observable<ICartonTrackDetail[]>;
// setup
const serverStream = this.cartonService.getCartonsObservable();
this.clientStream$ = new Subject<ICartonTrackDetail[]>();
this.cartons$ = serverStream.merge(this.clientStream$);
// when you get new data to send to server:
this.clientStream$.next(newData);
.. add code to send newData to server like normal ..
现在订阅cartons$
的任何代码都会在您调用clientStream$.next(newData)