承诺没有得到分支

时间:2018-04-12 21:06:27

标签: angular typescript firebase promise angular-promise

我已经实现了这个功能来更新firebase上的用户,问题是它从不调用“then”函数......关于这个问题的任何建议?

用户在数据库中已正确更新,如果我尝试直接在函数上实现“then”分支,则会被触发。

编辑():

     // Proseguo con aggiornamento
     this.statoUtente.updateCurrentUser(uteIn).then(() => {

          <<<<<<<<<<<<<<<<<<<<< program never call this >>>>>>>>>>>>>>>>>

          console.log('Risposta da Promise') ;  
          // Dopo l'aggiornamento chiedo di completare le informazioni mancanti
          this.nomeTemplate = 'updateUserForm' ;
          this.helperset = 2 ;
          this.wait = false ;
          this.error = '' ;
      })




updateCurrentUser(UteIn : TipoSingoloUtente) : Promise<any> {

  let Promessa = new Promise<any>(observer => {
    let IDUtente = this.afAuth.auth.currentUser.uid ;
    console.log(IDUtente) ;
    if ((IDUtente) && ( IDUtente.trim() != '' )) {
      UteIn.ID = IDUtente ;
      observer(this.db.object('users/' + IDUtente).set(UteIn))
    } else {
      console.log('null null null') ;
      Promise.resolve(false) ;
    }
  }) ;

  return Promessa ;

}

2 个答案:

答案 0 :(得分:2)

你只需要

updateCurrentUser(UteIn: TipoSingoloUtente) {
  const IDUtente = this.afAuth.auth.currentUser.uid;
  if (IDUtente && IDUtente.trim() != '') {
    UteIn.ID = IDUtente;
    return this.db.object('users/' + IDUtente).set(UteIn);
  } else {
    console.log('null null null');
    return Promise.resolve(false);
  }
}

您不需要将其包装在Promise构造函数中。 this.db.object...返回PromisePromise.resolve(...)返回Promise,以便您恢复正常。

答案 1 :(得分:0)

您应该删除您手动创建的承诺。没有必要。您只能使用此返回的承诺:

this.db.object('users/' + IDUtente).set(UteIn)

当该承诺解决后,您可以确定数据库已更新。