存储 get() 永远不会在 ionic 2 中返回值



学习离子2,特别是使用Storage

所以,我刚刚创建了一个空白应用程序:

ionic start storagetest blank --v2

在此文档之后:

cordova plugin add cordova-sqlite-storage --save
npm install --save @ionic/storage

然后,我的app.module.ts如下所示:

import { NgModule, ErrorHandler } from '@angular/core';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { IonicStorageModule } from '@ionic/storage';
@NgModule({
  declarations: [
    MyApp,
    HomePage
  ],
  imports: [
    IonicModule.forRoot(MyApp),
    IonicStorageModule.forRoot()
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler}
  ]
})
export class AppModule {}

然后继续home.ts

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Storage } from '@ionic/storage';
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  constructor(public navCtrl: NavController, storage: Storage) {
     storage.ready().then(() => {
       storage.set('name', 'Max');
       storage.get('name').then((val) => {
         console.log('Your name is', val);
       })
     });
  }
}

javascript 日志中没有任何内容。看来get()永远不会返回该值。但是,ready()确实有效,因为我在其中放了一个console.log()

那有什么问题呢?

我正在Chrome,Mac OS上运行该应用程序。

storage.set是异步的,并返回一个承诺。因此,调用 get().then() 时可能不会设置值。尝试:

 storage.ready().then(() => {
       storage.set('name', 'Max').then(()=>
       storage.get('name').then((val) => {
         console.log('Your name is', val);
       });
      );
     });

您在thencatch()方法中没有错误处理程序,这可能就是不记录任何内容的原因。

相关内容

  • 没有找到相关文章

最新更新