Как создать действие на основе обещания (вместо sendAction) в ember? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть сценарий использования, когда действие должно получить значение из другого компонента, исходя из того, что мне нужно выполнить некоторые действия. Изначально я использовал sendAction (вместо обещание действия) для выполнения некоторых действий. Но closeDataModal () запускается сразу после завершения sendAction. Я хочу, чтобы первая функция завершилась, а затем запустила вторую.

saveAction() {
  promiseAction()
  closeDataModal() -> Run after resolving the promiseAction
}

1 Ответ

3 голосов
/ 08 ноября 2019

Используйте асинхронную функцию, чтобы вы могли ожидать асинхронную операцию, например, асинхронное действие.

async saveAction() {
   await promiseAction()
   closeDataModal() -> will run after resolving the promiseAction
}

Если вы хотите использовать результат обещания действия, то:

async saveAction() {
   let result = await promiseAction()
   closeDataModal(result) -> will run after resolving the promiseAction
}

Как упомянуто в комментариях, это не будет работать с sendAction, который устарел.

См. https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/async_function для получения дополнительной информации о том, как работает async / await и как выполняется обработка ошибок.

...