Typescript在函数外部获取对象

时间:2018-03-17 17:22:09

标签: typescript

我有一个用于创建新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();
  }     
}

对不起,如果排队有些愚蠢,但我是初学者,尤其是使用打字稿。谢谢:))

1 个答案:

答案 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();
  }
}