我有一个用于创建新firebase用户的打字稿功能。 我想在函数外部获取用户对象(由此函数创建),但是当我尝试使用console.log时,我得到" undefined"在控制台中。
async saveProfile(){
const secondaryApp = this.firebase.initializeApp(this.config,"appname2");
var X;
try {
secondaryApp.auth().createUserWithEmailAndPassword(this.em, this.pwd)
.then(function test(firebaseUser) {
X = firebaseUser;
//Here I CAN GET THE OBJECT X
console.log(X);
secondaryApp.auth().signOut();
})
//I WANT TO GET THE X OBJECT HERE !!
//BUT I GET "UNDEFINED"
console.log(X);
}
catch(e){
console.error(e);
this.toast.create({
message: e.message,
duration: 3000
}).present();
}
}
对不起,如果排队有些愚蠢,但我是初学者,尤其是使用打字稿。谢谢:))
答案 0 :(得分:0)
.then()
之外的代码在Promise之前运行(由createUserWithEmailAndPassword
返回)完成。
你必须等待它,这就是console.log(X)
句柄内的.then()
有效的原因。
由于您位于async
函数内,因此可以使用await
:
async saveProfile() {
const secondaryApp = this.firebase.initializeApp(this.config, "appname2");
var X;
try {
// added await below
X = await secondaryApp.auth().createUserWithEmailAndPassword(this.em, this.pwd);
secondaryApp.auth().signOut();
console.log(X);
} catch (e) {
console.error(e);
this.toast.create({
message: e.message,
duration: 3000
}).present();
}
}