Как запустить более одной функции синхронно в реакции js - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть componentDidUpdate(), в котором есть две функции:

  componentDidUpdate(prevProps){
      if (prevProps !== this.props){
        this.getListHistory()
        this.forceUpdate()
      }
    }

В функции this.getListHistory() есть асинхронная функция firestore, поэтому при попытке выполнить функцию this.forceUpate() она не не жду getListHistory().

Теперь я хочу, чтобы моя функция this.forceUpdate() ожидала завершения getListHistory(), но я не хочу нарушать код внутри getListHistory(). Как я могу сделать это?

1 Ответ

0 голосов
/ 27 апреля 2020

вы должны вернуть обещание как возвращаемое значение this.getListHistory() и вызвать this.forceUpdate() в .then(); посмотрите примеры ниже:

function getListHistory(){
 // your codes
 return new Promise((resolve,reject) => {
  // some code maybe
  //you can also have a return value passed to resolve like this; resolve("someReturnValue")
  resolve()
 })
componentDidUpdate(prevProps){
 if (/* some condition*/){
  this.getListHistory().then( value => this.forceUpdate())
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...