Tag: rxjs

Angular 2 – 直接从Observable返回数据

我一直在试图弄明白这个问题,而我一直在嘲弄我的头脑,没有任何我能读的文件给了我一个答案。 我有一个直接和API通话的服务,并返回一个可观察的事件,在正常情况下,我会订阅并按照我所希望的方式来处理这些数据,但是在一个利用来自平静服务请求的辅助服务中,我需要能够从请求中返回值。 getSomething() { return this._restService.addRequest('object', 'method').run() .subscribe( res => { res; }, err => { console.error(err); } ); } returnSomething() { return this.getSomething(); } 在上面的快速示例中,我想知道是否有任何方法可以从getSomething()中的getSomething()返回res 。 如果这样做是不可行的,还有什么办法呢? 我会补充说,_restService是非常依赖,我真的不想开始搞乱。

Angular 2 HTTP GET与TypeScript错误http.get(…).map不是中的函数

我在Angular 2遇到了HTTP问题。 我只想GET一个JSON列表并在视图中显示它。 服务类 import {Injectable} from "angular2/core"; import {Hall} from "./hall"; import {Http} from "angular2/http"; @Injectable() export class HallService { public http:Http; public static PATH:string = 'app/backend/' constructor(http:Http) { this.http=http; } getHalls() { return this.http.get(HallService.PATH + 'hall.json').map((res:Response) => res.json()); } } 在HallListComponent我从服务中调用getHalls方法: export class HallListComponent implements OnInit { public halls:Hall[]; public _selectedId:number; constructor(private _router:Router, […]

在RxJs 5中分享Angular 2 Httpnetworking调用的结果的正确方法是什么?

通过使用Http,我们调用一个方法来进行networking调用并返回一个http observable: getCustomer() { return this.http.get('/someUrl').map(res => res.json()); } 如果我们把这个可观察的,并添加多个用户: let network$ = getCustomer(); let subscriber1 = network$.subscribe(…); let subscriber2 = network$.subscribe(…); 我们想要做的是确保这不会导致多个networking请求。 这可能看起来像一个不寻常的场景,但其实很常见:例如,如果调用者订阅observable以显示错误消息,并使用asynchronouspipe道将其传递到模板,则我们已经有两个订阅者。 在RxJs 5中做这件事的正确方法是什么? 也就是说,这似乎工作正常: getCustomer() { return this.http.get('/someUrl').map(res => res.json()).share(); } 但这是RxJs 5中这种做法的惯用方式,还是我们应该做一些其他的事情?

Angular / RxJs什么时候应该退订订阅?

在Angular应用程序中使用Subscription.unsubscribe()的最佳实践是什么? 什么时候应该存储Subscription并在销毁事件上调用unsubscribe()以及何时可以忽略它们。 保存所有的订阅引入了很多混乱的组件代码。 HTTP客户端指南忽略像这样的订阅: getHeroes() { this.heroService.getHeroes() .subscribe( heroes => this.heroes = heroes, error => this.errorMessage = <any>error); } 在同一时间路线和导航指南说: 最终,我们将在其他地方导航。 路由器将从DOM中删除这个组件并销毁它。 在这之前我们需要自己清理。 具体来说,我们必须在Angular销毁组件之前取消订阅。 不这样做可能会造成内存泄漏。 我们在ngOnDestroy方法中取消订阅我们的Observable 。 private sub: any; ngOnInit() { this.sub = this.route.params.subscribe(params => { let id = +params['id']; // (+) converts string 'id' to a number this.service.getHero(id).then(hero => this.hero = hero); }); […]

冷热观察者:有“热”和“冷”操作者吗?

我回顾了以下这个问题: 什么是热和冷的观察? 总结: 一个冷观察者在有观察者消耗它们的时候发出它的值,即观察者接收到的值序列与订阅时间无关。 所有观察者都将消耗相同的值序列。 一个热点观察者发出的价值与其订阅无关,即观察者收到的价值是订阅时间的函数。 然而,我觉得热与寒冷仍然是一个混乱的来源。 所以这是我的问题: 所有rx观察者在默认情况下都是冷的(除了科目)? 我经常看到事件是热门的可观察事物的尖端隐喻,但是我也读到Rx.fromEvent(input, 'click')是一个冷的可观察的Rx.fromEvent(input, 'click') (?)。 有哪些Rx运营商将冷观测变成热门观测(除了publish和share )? 比如说,它是如何与Rx运算符withLatestFrom ? 让cold$是一个冷的可观察的,在某个地方被订阅。 将sth$.withLatestFrom(cold$,…)是一个热点? 或者如果我做sth1$.withLatestFrom(cold$,…), sth2$.withLatestFrom(cold$,…)并订阅sth1和sth2 ,我会一直看到这两个相同的值吗? 我认为Rx.fromEvent创造了冷的可观察性,但事实并非如此,正如答案中提到的那样。 但是,我仍然对这种行为感到困惑: codepen.io/anon/pen/NqQMJR?editors=101 。 不同的订阅从相同的观察值获得不同的值。 是不是共享click事件?