【问题标题】:Add callback to observable before subscribing在订阅前添加回调到 observable
【发布时间】:2018-05-28 06:49:45
【问题描述】:

我在使用 Rxjs 库时遇到了一些困难,尤其是在使用 Observables 时:

我有一个 Angular 2 应用程序,它使用返回 Observable 的 HTTP 库调用 API

事实是,当我有更新用户的功能时:

function updateUser(user: User) {
    return this.http.put("http://myAPI/user/update, user)  
}

我想在每次 updateUser 调用时更新用户,而不是在调用方这样做:

function updateUser(user: User) {
    return this.http.put("http://myAPI/user/update", user).addCallback( updatedUser => {
        this.user = updatedUser.json()
    })
}

为了清楚起见,我想放置一个每次订阅“updateUser()”时都会调用的函数。

有什么办法吗?

感谢您的帮助!

【问题讨论】:

  • “在每次 updateUser 调用中更新用户而不在调用方执行此操作”是什么意思。 ?
  • 对不起,我已经更新了帖子并举例说明了我的期望
  • 对不起,还是不太明白你在找什么。是否要更新传递给函数的用户对象?或者你想修改函数,让它在更新后总是返回 json?
  • 我想要的是添加一个函数,每次有人订阅 updateUser() 函数时都会调用该函数,以便从 API 响应中自动更新用户

标签: angular typescript observable


【解决方案1】:

如果我对您的理解正确,您希望操纵 observable 的返回值,以便始终返回用户。

如果是这种情况,您可以使用 Observable.map 函数

http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-map

在你的情况下,它可能看起来像这样

function updateUser(user: User) {
    return this.http.put("http://myAPI/user/update", user)
        .map(response => {
            return response.json();
        });
}

【讨论】:

  • 这不是我所期望的:在我的类 API 中,我有函数“updateUser()”和成员“user:User”。在 B 类中,我调用“API.updateUser().subscribe()”,但我不想在 B 类中使用“API.user = updatedUser.json()”,我想在 API 类中自动执行
猜你喜欢
  • 1970-01-01
  • 2020-02-03
  • 2016-12-30
  • 2018-03-13
  • 2016-12-12
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
相关资源
最近更新 更多