我正在尝试将一些数据保存/更新到我的Firestore文档中。我已经成功实现了它,没有任何问题。要保存数据,我使用的是异步函数。但是我对异步函数或Promise不太熟悉。 我在下面发布了我的代码,我的问题是,我是否正确实现了该功能?这是使用异步功能实现更新/创建的正确方法吗?
预先感谢
这是我的代码;
edit_menu.ts
async onSaveClick() {
try {
this.modifyService.
updateLocationWiseMenuData(this.data.id, this.valueArray)
.then(error => {
console.log(error);
}).catch(eror => {
console.log(eror)
})
}
catch (error) {
throw error
}
}
service.ts
async updateLocationWiseMenuData(id: string, array: any[]) {
try {
if (id && array.length) {
for (const i of array) {
if (i.defaultPrice) {
await this.afs.collection(`Locations/${id}/menuList`).doc(`${i.id}`).update({
defaultPrice: i.defaultPrice
})
}
if (i.hasOwnProperty('isAvailable')) {
await this.afs.collection(`Locations/${id}/menuList`).doc(`${i.id}`).update({
isAvailable: i.isAvailable
})
}
}
}
}
catch (error) {
throw error
}
}
答案 0 :(得分:0)
在不知道它到底应该做什么的情况下,很难说出它是否正确。
我要说的是捕获错误并立即将其重新抛出是没有意义的。只是让它自己抛出并使调用者对其进行处理。
此外,这没有意义:
.then(error => {
console.log(error);
})
then()
用于处理成功的结果,而不是处理错误。
答案 1 :(得分:0)
异步功能只是一种不同的语法。这是没有异步/等待的代码。
{
xtype: 'tagfield',
itemId: 'tagfield',
multiSelect : true,
displayField: 'name',
valueField: 'id',
bind: {
label: '{i18n.topic.topics} ',
store: '{topics}',
selected: '{record.topics}'
},
}
使用异步/等待
onSaveClick() {
return this.modifyService.updateLocationWiseMenuData(this.data.id, this.valueArray)
.then(success => {
console.log(success);
}).catch(error => {
console.log(error)
});
}
两个函数都返回一个诺言。