javascript - Storage get() 在 ionic 2 中永远不会返回值

标签 javascript ionic-framework ionic2

学习 ionic 2,特别是使用存储

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

ionic start storagetest blank --v2

关注此the docs :

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 是异步的并返回一个 Promise。因此当调用 get().then() 时可能不会设置值。尝试:

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

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

关于javascript - Storage get() 在 ionic 2 中永远不会返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42989910/

相关文章:

javascript - Chrome 认为我的 JavaScript 是普通话

javascript - 鼠标悬停或 onclick 事件不适用于 dc.js 中的散点图

javascript - 物体距离的倒数

angular - 单击按钮打开 url 但来自 ts 函数

javascript - Firebase getDownloadURL 返回结果

javascript - AngularJS 无法注入(inject)服务

angular - 如何在 IONIC 中使用连续语音转文本

javascript - 分享使用 JavaScript 生成的 map

javascript - 在图像加载时显示加载图标

javascript - 使用 ionic 根据输入文本计算价格