承诺没有得到然后分支
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 一个 Promise
和 Promise.resolve(...)
returns 一个 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 ;
}
您应该删除您手动创建的承诺。没有必要。您只能使用由此返回的承诺:
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 一个 Promise
和 Promise.resolve(...)
returns 一个 Promise
所以你很好。