我不确定这里的问题是什么,但我无法返回值。我现在不想使用 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/