javascript - ionic 2 存储不适用于变量

标签 javascript angular ionic-framework ionic2

我不确定这里的问题是什么,但我无法返回值。我现在不想使用 sqlite。

 doLogin(event){
    this.storage.get('user').then((val) => {
      this.username=val;
      console.log(this.username);
      console.log(val);
  });

}

问题是第一个日志返回未定义但第二个日志返回正确的值。

编辑: 真的对不起伙计们。两个日志都工作正常。但是下面提到的日志不起作用。这导致 if 语句返回 false,即使所有值都匹配 文件的完整代码

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { FormBuilder, Validators } from '@angular/forms';
import { Storage } from '@ionic/storage';

@Component({
  selector: 'login',
  templateUrl: 'login.html'
})
export class LoginPage {

   username: string;
   password: string;

  public loginForm = this.fb.group({
    password: ["", Validators.required],
    user: ["", Validators.required],

  });

  constructor(public navCtrl: NavController, public fb:FormBuilder, public storage:Storage) {

  }


  doLogin(event){
    this.storage.get('user').then((val) => {
      this.username=val;
      console.log( this.username);
      console.log(val);
  });

  this.storage.get('password').then((val) => {
       this.password=val;
  });
  console.log(this.username); //NOT WORKING
      if( this.username == this.loginForm.get('user').value &&  this.password == this.loginForm.get('password').value)
          {
            console.log("Login Successful");
          }


  }

最佳答案

Promise 是异步的..控制台日志语句可能在数据库返回 val 之前被调用。您可以在 then

中执行此操作

如果你正在使用 promises,你可以使用 Promise.all

let userCredentials = [this.storage.get('user'),this.storage.get('password')];
Promise.all(userCredentials).then(values =>{
  this.username = values[0];
  this.password = values[1];
   if( this.username == this.loginForm.get('user').value &&  this.password == this.loginForm.get('password').value)
      {
        console.log("Login Successful");
      }
});

Promise.all 将调用 promise 数组并等待所有返回。

关于javascript - ionic 2 存储不适用于变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44340716/

相关文章:

forms - 如何在 Angular 4 + Redux 设置中处理表单

javascript - 选择选项时显示 div 标签 | Angular 1

angular - Ionic 4 - ionic 选择不会滚动到警报中的选定项目

javascript - jQuery 检查单选按钮值

javascript - Wordpress API post 搜索多个词

javascript - 如何在 http 拦截器 Angular 中处理/检测取消的请求?

android - 如何在 Ionic3、Cordova 和 Angular4 应用程序中获取 android 设备的语言?

javascript - jQuery 更改事件不会在指定的选择器上触发

javascript - 具有不同值的 Mongodb 多更新

JavaScript 正则表达式在 Java 中不起作用