提问者:小点点

如何编写一个函数,使超文本传输协议请求并返回请求的结果?


函数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()中返回超文本传输协议请求的值?


  • 共1个答案

    匿名用户

    我认为你想做一些像

    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-。当然,作为所有可观察对象,您需要订阅“启动”。好吧,您可以在订阅中等于值,而不使用“抽头”。但一般来说,可观察对象必须在服务中声明并在组件中订阅,因此变量“属于”服务更合乎逻辑。