函数getEventId()
返回this. eventId
。
如果this. eventId==null
,
>
正在调用发出超文本传输协议请求的函数。
this. eventId=resp
(请求的响应)。
ngOnInit() { // 下面的函数发出超文本传输协议请求
getEventId(){if(this. eventId){//if服务器请求返回已经响应返回(this.eventId)}else{getCustomerFileByCode().订阅(data=
getCustomerFileByCode():可观察{返回this.http.post(this._url, JSON.stringify(params),this.option)}
如何在函数getEventId()
中返回超文本传输协议请求的值?
我认为你想做一些像
getEventId(elementId):Observable<any> {
if (this.eventId) { //if the server request returned already
return of(this.eventId)
} else {
return this.getCustomerFileByCode(elementId).pipe(
map(data=>data[0]),
tap(res => {
this.eventId = res;
})
}
在ngOnInit中
this.getEventId(this.elementId).subscribe(()=> {
...make something more...
...don't worry about this.eventId because the "tap" ...
...on the observable yet store the value...
})
请注意,getEventId返回一个可观察对象,如果“this. eventId”还没有,只需返回,else调用API,转换响应-使用map-并存储值-使用tt-。当然,作为所有可观察对象,您需要订阅“启动”。好吧,您可以在订阅中等于值,而不使用“抽头”。但一般来说,可观察对象必须在服务中声明并在组件中订阅,因此变量“属于”服务更合乎逻辑。