如何处理过时的可观察数据

时间:2017-01-10 08:08:39

标签: angular rxjs angular2-routing observable

应该怎样做才能处理过时的数据?我有两个相似(但不完全相同)的场景。一个是有新数据的时候,另一个是Observable中没有新数据的时候:

案例一:

  1. 用户导航到类别说/笔记本电脑
  2. 用户点击产品
  3. 用户希望返回类别,但点击不同的类别说/监视器
  4. 在代码中它看起来像这样:

    export class CategoryComponent implements OnInit {
    
    private category : Observable<Category>;
    
    constructor(private categoryService : CategoryService , 
                private activatedRoute : ActivatedRoute){
        this.category = categoryService.category;
    }
    
    ngOnInit() {
      this.subscribeToUrlChange();
    
    }
    
    private subscribeToUrlChange(){
        this.activatedRoute.params.subscribe(params  =>{
            const category = '/'+params['category'];
            this.categoryService.getCategory(category);    
    
        });
    }
    

    }

    这里会发生的是视图将首先呈现,并且在http调用的持续时间内将显示200ms旧类别,然后当http请求结算并且新类别命中类别主题时快速查看,视图将刷新来自&#34;监视器&#34;类别。 我假设这种恼人的行为在生产高峰时段会更糟。 简单的解决方法是首先将null发送到类别主题,然后执行http请求,但这会打开另一组问题。

    案例二:

    export class CartComponent{
    
       private order : Observable<Order>;
    
       constructor(private cartService : CartService) {
          this.order=this.cartService.order;
       }
    }
    

    另一方面,cartService将具有以下内容:

    private _order : Subject<any> = new Subject<any>();
    public order : Observable<Order> = this._order.asObservable();
    

    困境:当用户退出时,我应该只是这个.__ order.next(null)?有更优雅的方式来处理这个问题吗?

0 个答案:

没有答案