离子2,“返回”不起作用

时间:2017-04-22 12:31:20

标签: return ionic2

  tamGetir(yno){
    let yazilan:any;

     let body={
           uyeno:this.uye.uyeno,
           eposta: this.uye.eposta,
           sifre: this.uye.sifre,
           gunlukno: this.defterno,
           yazino: yno
          }  
    this.http.post('http://www.gibigo.com/sayfalar/ion_android_gungetir2.php',JSON.stringify(body))
          .map(res=>res.json())
          .subscribe(data=>{

                 console.log(data.yazi);
                 yazilan=data.yazi;
           });
    return yazilan;
 }

“data.yazi”在控制台中看起来正确,但返回操作不起作用。回归是无关紧要的。我怎样才能正确回归呢。

1 个答案:

答案 0 :(得分:0)

http函数返回 Observable 。这是异步的。当您使用subscribe时,将触发http请求并返回一个observable。数据在回复时收到。

yazilan=data.yazi;在返回语句后发生。 您应该使用类变量来简单地保存订阅中的数据。

如果您的方法位于提供程序中,请返回带有map的http调用和组件中的subscribe

 tamGetir(yno){
    let yazilan:any;

     let body={
           uyeno:this.uye.uyeno,
           eposta: this.uye.eposta,
           sifre: this.uye.sifre,
           gunlukno: this.defterno,
           yazino: yno
          }  
    return this.http.post('http://www.gibigo.com/sayfalar/ion_android_gungetir2.php',JSON.stringify(body))
          .map(res=>res.json())

在您的组件中:

yazi:any;//class variable

callHttpFunction(){
  this.provider.tamGetir(yno)
   .subscribe(data=>{//call the subsribe
              console.log(data);
              this.data_variable =data.yazi;
              })
}