Как правильно использовать Async? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь сохранить / обновить некоторые данные в своем документе пожарного депо. Я успешно реализовал их без каких-либо проблем. Для сохранения данных я использую асинхронную функцию. Но я не очень хорошо знаком с асинхронными функциями или обещаниями.Я разместил свой код ниже, и мой вопрос, правильно ли я реализую функцию или нет?Это правильный способ реализации обновления / создания с использованием асинхронной функции .?

Заранее спасибо

Вот мой код;

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
}

}

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Асинхронная функция - это просто другой синтаксис.Вот код без async / await.

onSaveClick() {
  return this.modifyService.updateLocationWiseMenuData(this.data.id, this.valueArray)
    .then(success => {
      console.log(success);
    }).catch(error => {
      console.log(error)
    });
}

с async / await

async onSaveClick() {
  try {
    const success = await this.modifyService.updateLocationWiseMenuData(this.data.id, this.valueArray);
    console.log(success);
  } catch(error) {
    console.log(error)
  }
}

Обе функции возвращают обещание.

0 голосов
/ 27 сентября 2018

Не зная, что именно он должен делать, не очень легко сказать, правильно ли это или нет.

Я скажу, что на самом деле не имеет смысла отлавливать ошибку, а затем немедленно ее перебрасывать.Просто дайте ему скинуть самому и заставьте звонящего разобраться с ним.

Кроме того, это не имеет смысла:

.then(error => {
  console.log(error);
})

then() для обработки успешных результатов, а не для обработкиошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...