Ionic3获取承诺值

时间:2017-12-21 20:34:37

标签: angular typescript ionic-framework promise

我是IONIC的新手。我有一个简单的问题,我不能使用promisecript类的promise值。它返回对象,但我需要值。否则我的一个条件不能实现。任何人都可以指导我如何将这个承诺值用于typescript类?代码是

app.component.ts

import { TabsPage } from '../pages/tabs/tabs';
import {SocialActivitiesPage} from '../pages/social-activities/social-activities';
import { HomeTabsPage } from '../pages/home-tabs/home-tabs';
export class MyApp implements OnInit {
  rootPage:any = TabsPage;
  socialProfile:any = SocialActivitiesPage;
  hometabs:any = HomeTabsPage;

@ViewChild('nav') nav:NavController;

  constructor(platform: Platform, 
      statusBar: StatusBar, 
      splashScreen: SplashScreen,
      public menuCtr:MenuController,
      private storage: Storage,) {

  }
  token:Promise<any> = this.storage.get('token').then((val)=>{
    return this.token = val; 
  }).catch(
    (err)=>{
      console.log(err);
    }
  )

  ngOnInit(){
    if(this.token!==null){
      this.rootPage = HomeTabsPage; 
    }
  }
  ionViewDidLoad(){
    console.log(this.token);
  }

}

上面的代码是我的app.component.ts,我通过下面的

解决了我的令牌承诺
token:Promise<any> = this.storage.get('token').then((val)=>{
    return this.token = val; 
  }).catch(
    (err)=>{
      console.log(err);
    }
  )

并试图将一个条件纳入ngOnInit()

  ngOnInit(){
    if(this.token!==null){
      this.rootPage = HomeTabsPage; 
    }
  }

不幸的是,这种情况不起作用。我的令牌是否为null或不为null。这里this.token是一个对象,而不是任何值。但是,如果我从app.html调用此标记,它将返回为字符串值,而不是对象。我试图像这样将这个令牌称为app.html

{{token}}

显示字符串值。不幸的是,从typeScript类开始,它始终显示我的一个对象,其中有一些_zoneSymboleType_zoneSymboleValue。在_zoneSymboleValue中我可以看到我的价值。所以我的问题如何将this.token用作值,而不是作为我的typeScript条件中的对象。
非常感谢您的努力。
感谢

1 个答案:

答案 0 :(得分:1)

这是异步的,因此响应到达需要一段时间,您可以通过在OnInit中调用该函数来解决此问题:

ngOnInit() {
  this.storage.get('token').then((val)=>{
    if(val!==null){
      this.rootPage = HomeTabsPage; 
    }
  })
}

详细了解异步:How do I return the response from an Observable/http/async call in angular2?