【发布时间】:2018-04-13 08:24:16
【问题描述】:
我已经实现了这个函数来更新我在 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 ;
}
【问题讨论】:
-
你永远不会兑现你的承诺。承诺构造函数中的
return不会解析承诺。您需要以您的结果作为参数调用observer函数。 -
你为什么要使用 Promise?该代码中没有任何内容看起来是异步的。
-
@Bergi 我假设
this.db.object('users/' + IDUtente).set(UteIn)将是异步的。但是,如果这返回了一个承诺,那么您可以在另一个分支中返回它和Promise.resolve(false)。 -
@TylerSebastian...是的,this.db...返回一个承诺...如果我在函数内设置“then”分支,它会着火...如果我离开代码作为我的问题......它永远不会在函数之外调用 then 分支......我已经更新了“承诺解析的其他分支”
-
@CRice 好家伙,我只是将代码更新为:“observer(this.db.object('users/' + IDUtente).set(UteIn))”,它就可以工作了!跨度>
标签: angular typescript firebase promise angular-promise