在Angular 1.x中,我有时需要做出多个http请求,并对所有的响应进行处理。 我将所有的承诺放在一个数组中,并调用Promise.all(promises).then(function (results) {…}) 。 Angular 2的最佳实践似乎指向使用RxJS的Observable来代替http请求中的承诺。 如果我有两个或更多不同的Observable从http请求创build,他们相当于Promise.all() ?
函数more()应该从get请求中返回一个Observable export class Collection{ public more = (): Observable<Response> => { if (this.hasMore()) { return this.fetch(); } else{ // return empty observable } } private fetch = (): Observable<Response> => { return this.http.get('some-url').map( (res) => { return res.json(); } ); } } 在这种情况下,我只能做一个请求,如果hasMore()是真的,否则我得到一个错误的subscribe()函数subscribe is not defined ,我怎样才能返回一个空的可观察? this.collection.more().subscribe( (res) =>{ console.log(res); }, (err) =>{ console.log(err); […]
我正在阅读关于路由和导航的Angular Guide 。 他们使用这个代码来检索路由器的参数'id'并用它来获得service服务的英雄: ngOnInit() { this.route.params .switchMap((params: Params) => this.service.getHero(+params['id'])) .subscribe((hero: Hero) => this.hero = hero); } 但是我不明白在上面的代码中使用switchMap操作符的目的是什么。 下面的代码不会一样吗? ngOnInit() { this.route.params // NOTE: I do not use switchMap here, but subscribe directly .subscribe((params: Params) => { this.service.getHero(+params['id']).then(hero => this.hero = hero) }); }
在RxJava中实现并行asynchronous调用需要一些帮助。 我select了一个简单的用例,其中FIRST调用获取(而不是search)要显示的产品列表(Tile)。 随后的呼叫出去并取(A)REVIEWS和(B)产品图像 经过几次尝试,我到了这个地方。 1 Observable<Tile> searchTile = searchServiceClient.getSearchResults(searchTerm); 2 List<Tile> allTiles = new ArrayList<Tile>(); 3 ClientResponse response = new ClientResponse(); 4 searchTile.parallel(oTile -> { 5 return oTile.flatMap(t -> { 6 Observable<Reviews> reviews = reviewsServiceClient.getSellerReviews(t.getSellerId()); 7 Observable<String> imageUrl = reviewsServiceClient.getProductImage(t.getProductId()); 8 return Observable.zip(reviews, imageUrl, (r, u) -> { 9 t.setReviews(r); 10 t.setImageUrl(u); 11 return t; […]
在获得新价值之前,是否有可能在淘汰赛中获得可观察项目内的可观察项目的现值? 例: this.myObservable = ko.observable(); this.myObservable.subscribe(function(newValue){ //I'd like to get the previous value of 'myObservable' here before it's set to newValue });
这更像是一个“最佳实践”的问题。 有三个参与者:一个Component ,一个Service和一个Model 。 Component正在调用Service以从数据库中获取数据。 该Service正在使用: this.people = http.get('api/people.json').map(res => res.json()); 返回一个Observable 。 Component可以只订阅Observable : peopleService.people .subscribe(people => this.people = people); } 但是,我真正想要的是Service返回从数据库中检索的数据创buildArray of Model对象Array of Model 。 我意识到Component可以在订阅方法中创build这个数组,但我认为如果服务做到这一点,并使其可用于Component ,将是更清洁。 如何可以创build一个新的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是非常依赖,我真的不想开始搞乱。