2017-06-16 17 views
0

Imは私が概念を理解すると思いますが、私のプロジェクトのために、これはここで、私のコードのビットをなぜ私の約束は仕事をしないのですか?

を動作しない約束で苦労:

(Iは角2とIonic2とTypeScirptでコーディングしています)

ngOnInit() { 
    Promise.resolve(this.loadStatut()).then(() => this.testStatut()); 
} 

testStatut() { 
    if (this.admin !== undefined) { 
    this.navCtrl.push(ConnectPage); 
    } else { 
    console.log("Undefined") 
    } 
} 

admin; 
loadStatut() { 
    this.storage.get('admin').then((val) => { 
    this.admin = val; 
    console.log(this.admin) 
    }); 
} 

Result :

testStatutloadStatut前respondeを送って、私は反対を持っている必要があります。私は他の機能をテストしようと、それが仕事だ

:ここ

ngOnInit() { 
    Promise.resolve(this.test1()).then(() => this.test2()); 
} 

test1() { 
    console.log("1") 
} 

test2() { 
    console.log("2") 
} 

Result : コードが合法であるtest1その後、test2

答えて

2

私は

ngOnInit() { 
    this.loadStatut().then(() => this.testStatut()); 
} 

testStatut() { 
    if (this.admin !== undefined) { 
    this.navCtrl.push(ConnectPage); 
    } else { 
    console.log("Undefined") 
    } 
} 

admin; 
loadStatut() { 
    return this.storage.get('admin').then((val) => { 
    this.admin = val; 
    console.log(this.admin) 
    }); 
} 
ことをしようと、以下のようにコードを変更
+0

ありがとうございます、それは仕事です、あなたはあなたの変化を説明できますか? – Falender

+0

連鎖しているときには約束を返すべきです。 'this.storage.get(" foo ")'は 'Promise'を返し、' promise.resolve'を返すという約束のために 'ngOnInit'が機能します。 –

+0

@Flender、ええええええええええええええええええええええええ – RezaRahmati

関連する問題