【发布时间】:2017-07-18 22:14:59
【问题描述】:
在 $http 调用期间,我在 Angular (4.0) 应用程序中使用了以下代码。
return this.httpComponent.post(serviceUrl, request, args)
.map((res: any) => res.json() as R)
.catch((error: any) => Observable.throw(error.json().error || error.json().errorMessage || 'Server error'));
经过测试,我意识到多个订阅会多次触发请求。感谢这篇文章:Angular2 http.post gets executed twice 我发现我需要share() 结果。
这可以摆脱多次调用,但现在我的 catch() 方法似乎没有被击中。我希望我的 catch() 能够抛出错误。
我尝试了以下两个选项,但它们都不起作用:
return this.httpComponent.post(serviceUrl, request, args)
.map((res: any) => res.json() as R)
.share()
.catch((error: any) => Observable.throw(error.json().error || error.json().errorMessage || 'Server error'));
return this.httpComponent.post(serviceUrl, request, args)
.map((res: any) => res.json() as R)
.catch((error: any) => Observable.throw(error.json().error || error.json().errorMessage || 'Server error')
.share()); //This doesn't make sense since my catch() isn't returning an Observable
有谁知道我如何同时share()和catch(throw...)?
【问题讨论】: