如何在ionic3中解决这些问题Property 'catch' does not exist on type 'PromiseLike<void>'.
这里我添加了代码
adduser(newuser) {
var promise = new Promise((resolve, reject) => {
this.afireauth.auth.createUserWithEmailAndPassword(newuser.email,
newuser.password).then(() => {
this.afireauth.auth.currentUser.updateProfile({
displayName: newuser.displayName,
photoURL: ''
}).then(() => {
this.firedata.child(this.afireauth.auth.currentUser.uid)({
uid: this.afireauth.auth.currentUser.uid,
displayName: newuser.displayName,
photoURL: 'give a dummy placeholder url here'
}).then(() => {
resolve({ success: true });
}).catch((err) => {
reject(err);
})
}).catch((err) => {
reject(err);
})
}).catch((err) => {
reject(err);
})
})
return promise;
}
我不知道如何解决问题??
当我运行ionic serve
时,它可以正常运行
但是当我运行ionic cordova run android
时,它会显示以下问题Property 'catch' does not exist on type 'PromiseLike<void>'.
答案 0 :(得分:1)
我通过添加push()和set方法
解决了这个问题答案 1 :(得分:0)
类似Prom的对象(thenables)可能没有catch
方法,这就是错误所说的内容。他们需要转换为Promise.resolve
的承诺才能被用作通常的承诺。请注意,catch
是第二个then
参数的语法糖,而且thenable可以单独与then
一起使用,但方法结果仍应转换为promise。
代码使用promise构造反模式。一旦有承诺,就不需要使用new Promise
:
adduser(newuser) {
returnPromise.resolve(this.afireauth.auth.createUserWithEmailAndPassword(newuser.email,
newuser.password)).then(() => { return Promise.resolve(...) });
}
这对async..await
的效果更好,因为它会自然地将结果转换为承诺:
async adduser(newuser) {
await this.afireauth.auth.createUserWithEmailAndPassword(newuser.email,
newuser.password);
await this.afireauth.auth.currentUser.updateProfile(...);
await this.firedata.child(this.afireauth.auth.currentUser.uid).set(...);
return { success: true };
}