Search code examples
typescriptrxjsangular10rxjs-pipeable-operators

Cancel http.put()/http.get() and return value instead of creating/sending request


given the following code:

service:

getList(){
    return return this.http.request("put", url_, options_)
}  

component:

submitRequest(reset?){
    this.httpService.getList().subscribe((response) => {
        //if reset return an empty array
        //server cannot return an empty array
    })
}

and I want to do something like:

component:

submitRequest(reset?){
    this.httpService.getList().pipe(someOperator(() => {
        // if reset DO NOT MAKE HTTP CALL BUT INSTEAD RETURN []
    })).subscribe((response) => {
        //IF reset NO SERVER CALL WAS MADE BUT GOT [] FROM someOperator
        //SERVER RESPONSE ONLY IF NO reset
    })
}

how do i achieve this using RXJS ?


Solution

  • something like: if (reset) return of([])?

    submitRequest(reset?){
        if (reset) return of([])
    
        this.httpService.getList().pipe(someOperator(() => {
            // if reset DO NOT MAKE HTTP CALL BUT INSTEAD RETURN []
        })).subscribe((response) => {
            //IF reset NO SERVER CALL WAS MADE BUT GOT [] FROM someOperator
            //SERVER RESPONSE ONLY IF NO reset
        })
    }