承诺没有得到然后分支

Promise didn't get then branch

我已经实现了这个功能来更新我在 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 ;

}

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

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

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

你只需要

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... returns 一个 PromisePromise.resolve(...) returns 一个 Promise 所以你很好。