相关疑难解决方法(0)

使用angular2 http服务缓存结果

我通过服务公开HTTP GET请求,并且有几个组件正在使用此数据(用户的配置文件详细信息).我希望第一个组件请求实际执行到服务器的HTTP GET请求并缓存结果,以便后续请求将使用缓存数据,而不是再次调用服务器.

这是服务的一个示例,您如何推荐使用Angular2和typescript实现此缓存层.

import {Inject, Injectable} from 'angular2/core';
import {Http, Headers} from "angular2/http";
import {JsonHeaders} from "./BaseHeaders";
import {ProfileDetails} from "../models/profileDetails";

@Injectable()
export class ProfileService{
    myProfileDetails: ProfileDetails = null;

    constructor(private http:Http) {

    }

    getUserProfile(userId:number) {
        return this.http.get('/users/' + userId + '/profile/', {
                headers: headers
            })
            .map(response =>  {
                if(response.status==400) {
                    return "FAILURE";
                } else if(response.status == 200) {
                    this.myProfileDetails = new ProfileDetails(response.json());
                    return this.myProfileDetails;
                }
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

typescript angular

65
推荐指数
3
解决办法
6万
查看次数

如何在RxJS中将Observable转换为ReplaySubject?

以下是我现在要将Observable转换为ReplaySubject的内容:

const subject = new Rx.ReplaySubject(1);

observable.subscribe(e => subject.next(e));
Run Code Online (Sandbox Code Playgroud)

这是进行转换的最佳方式,还是有更惯用的方式?

rxjs rxjs5

13
推荐指数
2
解决办法
9968
查看次数

如何获得最后发射的Observable

我创建了一个Angular服务,该服务基本上设置了带有一些用户信息的对象。当我更改用户时,该服务将发出可观察到的信息,并由同级组件捕获以更新信息。问题是我第一次设置数据时,还没有人订阅,所以我得到一个未定义的值。我已经读过有关使用publish()或share()将可观察对象转换为“热”对象的信息,但是我对RxJS还是很陌生,但我仍然不了解它在100%的情况下如何工作,所以我有点迷失了。

服务代码(相关部分):

getFwcUser() : Observable<FwcUser> {
  return this.subjectFwcUser.asObservable();
}

setFwcUser(user : FwcUser) {
  this.fwcUser = user;

  this.subjectFwcUser.next(this.fwcUser);
}
Run Code Online (Sandbox Code Playgroud)

注意:FwcUser是带有某些用户字段的界面。我在按钮处理程序中运行setFwcUser以选择用户。

后期订阅者(组件代码):

ngOnInit() {
  this.fwcUserService.getFwcUser()
    .subscribe(
      (user : FwcUser) => { console.log('Received: ', user); this.fwcUser = user; }
  );
  [......]
}
Run Code Online (Sandbox Code Playgroud)

始终打印:“已接收:未定义”。注意:该组件位于'* ngIf =“ fwcUser”'内部,因此当我从同级组件调用'setFwcUser'时正在加载该组件。

如何获得该组件以读取丢失的值?

另外,有人可以为初学者推荐一个很好的资源来学习RxJS吗?我正在阅读有关Angular4的几本书,但没有一本书能清楚地解释它。

谢谢!

observable rxjs angular

5
推荐指数
1
解决办法
8654
查看次数

从 Angular 8 中的 Observable 获取最后一个值

如何从 Angular 8 中的 Observable 获取最后一个值?

let test = new BehaviorSubject<any>('');
test.next(this.AddressObservable);

let lastValue = test.subscribe(data=>console.log(data.value));
Run Code Online (Sandbox Code Playgroud)

由于某种原因它不起作用,检查调试器。

但是,这是在 html 中工作的, AddressObservable | async

尝试利用此链接,希望将值存储在变量中或显示在控制台日志中。任何更新的语法都会有所帮助。

订阅 Observable 时如何获取最后一个值?

笔记:

AddressObservable 是类型: Observable<AddressDto>

observable rxjs typescript angular angular8

2
推荐指数
1
解决办法
9446
查看次数

标签 统计

angular ×3

rxjs ×3

observable ×2

typescript ×2

angular8 ×1

rxjs5 ×1