Angular2 - Observable e Subscribe

Olá, Comunidade Guj

Estou desenvolvendo uma aplicação com IonicV2, logo estou fazendo o uso de Angular2 com TypeScript. Estou usando o Observable para recuperar as responses, e estou usando Subscribe para varrer os valores dentro do Observable retornado.

Segue o meu método que faz requisição para meu servidor

Classe: Services.ts

postObject(serviceRequested:string,urlSearchParams: URLSearchParams): Observable<any>{
 return this.http.post(this.getRequestURL(serviceRequested),urlSearchParams, this._getHeaders('P'))
                            .map(this._extractData)
                            .catch(this._handleError);
}

Com esses métodos, eu consigo normalmente fazer uma requisição externa. Segue minha classe que consome o Service.ts

import { Services } from './Services';
import { Injectable } from '@angular/core';
import { Http, URLSearchParams} from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { MensagemRetornoJSON } from '../model/MensagemRetornoJSON';
import { Cliente } from  '../model/Cliente';

@Injectable()
export class ClienteService extends Services<Cliente>{

public _mensagem: MensagemRetornoJSON;

constructor(private _http: Http){
    super(_http);
}

inserirCliente(cliente:Cliente):MensagemRetornoJSON{
    let params = new URLSearchParams();
    params.set("object",JSON.stringify(cliente));
    
    let observable:Observable<MensagemRetornoJSON> = this.postObject(this.FRADESERVICE_API_INSERIR_CLIENTE,params);  
    observable.subscribe(r=> this._mensagem = r);

    return this._mensagem;
}

}

No trecho observable.subscribe(r=> this._mensagem = r);, eu varro meu Observable e atribuo a variável de retorno que é MensagemRetornoJSON com o valor de r.

O problema é que quando eu dou um console.log(this._mensagem); abaixo da linha do subscribe, o valor retornado é ‘undefined’, sendo que eu já atribui um valor a esta variável dentro do subscribe.

Alguem sabe o que está acontecendo? Porque a variável _mensagem vem como ‘undefined’ mesmo depois de eu ter definido um valor para ela?

Grande abraço, comunidade.

Agradeço desde já.

Eu acredito que seja porque o subscribe é uma thread ou algo similar a uma thread. Não sei te dizer o porque, também estou curioso…

Mas você poderia fazer assim: observable.subscribe( r => console.log® ); ou fazer o console.log fora do inserirCliente.

Então mano.
Eu estou com o mesmo problema.
Eu coloquei o console log e, como o amigo aqui de baixo, eu acredito que o subscribe se comporta como uma thread.
Você já descobriu como resolver ?