ionic 的坑

2019-01-25  本文已影响0人  主打情歌

一、ionic 页面跳转

    constructor(public navCtrl: NavController              ) {
}
    goHome(){
      this.navCtrl.push(HomePage);//跳转到HomePage
}

解决方法

方法一

this.navCtrl.popToRoot(); //直接返回根组件
我们直接跳转到tabs根页面,自然会把堆栈清除,但是在不返回的过程中,相互跳转,页面堆栈叠加依然存在。

方法二

this.navCtrl.push(Html1Page).then(() => {
  const startIndex = this.navCtrl.getActive().index - 1;
  this.navCtrl.remove(startIndex, 1);
});
this.navCtrl.push(Html2Page).then(() => {
  const startIndex = this.navCtrl.getActive().index - 1;
  this.navCtrl.remove(startIndex, 1);
});

二、多线程处理

解决方法

方法一

 getImgURL(){
         this.rest.getImageUrl().subscribe(i => {
                this.imgUrl = i;
                    if(this.imgUrl==null){
                          this.getImgURL();
                     }
         }
}

方法二

 getImgURL(){
         this.rest.getImageUrl().subscribe(i => {
                this.imgUrl = i;
                 setTimeOut(()=>{
                    console.log(this.imgUrl)      
                  },100)
         }
}

三、移动端不支持session

后端存储用户信息的方式也有两种:

  • 缓存(cache) 我们可以使用缓存(cache)存储该信息,token为key,用户信息为value(这里建议把用户信息通过 JsonAPI 转换成 josn 字符串,一般key只可以为 String 类型),这样我们就可以通过前端传过来的 token 获取去缓存(cache)获取到对应的数据。但是缓存(cache)同样不支持分布式,如果有分布式需要,建议使用第二个方式。
  • redis redis是一个把数据存储在内存用的key-value型数据库,当然,很多人用它当做一个缓存库使用。因为他是存储在内存上的,所以我们的操作数据的速度也非常快,每秒可以操作大约100W个数据。而且 redis 是一个独立部署的数据库,所以我们只要拥有对应的key,就可以获取到对应的数据,所以基本任何架构,都可以使用 redis 作为缓存存储使用。
  • 我们只要把前端传过来的 token 作为key去找 redis 拿数据,就可以了,而且效率非常高,而且 redis 也支持分布式,可以有效的防止单点问题(某服务器挂了或者某实例挂了导致程序不能正常提供服务)。
  • 当然,redis是需要独立部署的,如果在小型项目中,就建议直接使用cache最为方便。

注意:

上一篇下一篇

猜你喜欢

热点阅读