gpt4 book ai didi

javascript - 从服务返回订阅 - 但如何在服务中使用异步结果?

转载 作者:行者123 更新时间:2023-12-01 01:07:06 24 4
gpt4 key购买 nike

抱歉,标题不好,我真的不知道如何表达它。

假设我在 Angular 组件中的某处有一个服务调用,例如:

this.myService.postObject(object).subscribe((serverData) => {
console.log('Server Name:' + serverData.name)
});

当 MyService 看起来像这样时,这当然可以完美地工作:

postObject(dataObject: MyObject) {
return this.http.post(`http://server/object`, dataObject);
}

但是,当我不仅想在订阅中单独对异步结果使用react,而且还想对所有调用做出一般 react 时,该怎么办 - 理想情况是这样:

postObject(dataObject: MyObject) {
return this.http.post(`http://server/object`, dataObject)
.subscribe(
(serverData) => {
console.log('Server Name:' + serverData.name)
})
}

This of course doesn't work as I can't return the .subscribe and then .subscribe again to it.

但我想到了日志记录、消息传递和其他一般事件,这些事件需要在执行帖子时完成。

有办法实现这一点还是我只是盲目地看到? :-(

最佳答案

这就是 tap是的,tap 不会修改您返回的可观察值,但可以处理诸如日志记录之类的事情。如果要修改返回的Obsertvable,请使用map相反

postObject(dataObject: MyObject) {
return this.http.post(`http://server/object`, dataObject)
.pipe(tap(serverData => {
console.log('Server Name:' + serverData.name)
}))
}

The RxJS tap operator (as in "wiretap") lets the code inspect good and error values passing through the observable without disturbing them.

https://angular.io/guide/http

关于javascript - 从服务返回订阅 - 但如何在服务中使用异步结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55518678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com