问题描述
private processRequest<T>(request: Observable<T>,...): Promise<T> {...}
request 是一个 HttpClient Observable
processRequest(httpClient.get(url,...));
...
processRequest(httpClient.post(url,...));
...
- 是否可以在 processRequest 中检索 url?如果是如何?如果不是为什么?
- 是否可以在 processRequest 中更改 url?如果是如何?如果不是为什么?
解决方法
是否可以在 processRequest 中检索 url? [...] 如果不是为什么?
一般意义上,在f(g(x))
中,f
无法访问x
,因为它只能看到g
返回的内容,而该返回值不必完全了解 x
。将 g = u => 42
视为一个不保留有关其输入的信息的函数的简单示例。
如果返回值保留该信息,它会工作。例如,对于 g = u => u
(身份函数),f
当然会知道 x
,因为这正是传递给它的内容。不过,这需要 f
具备此特定知识。
由于 HttpClient#get
返回 Observable
,但这里并非如此。如果您考虑到 url
是特定于 HttpClient
逻辑的信息,而 Observable
源于对 Angular 一无所知的 RxJs,那么这可以直观地理解。更直接地,只需检查 Obervable
的类型即可看到。
是否可以更改 processRequest 中的 url? [...] 如果不是为什么?
这很明显,但您无法更改无法访问的内容。