Код не выполняется при ожидании отправки в течение цикла - PullRequest
0 голосов
/ 05 марта 2020

Я ничего не могу найти по этому поводу, поэтому я решил спросить здесь. Я использую реагирующе-родной и редукс. Я оставил бизнес-логику c вне кода.

У меня есть эта функция, которая вызывает другую функцию, которая выполняет вызов API. Функция, которая выполняет вызов API, должна обращаться к «getState», поэтому я использую диспетчеризацию.

const getStuff = (day) => (dispatch) => {
    const result = await dispatch(functionThatDoesAPIRequest(day)
    }

Затем у меня есть этот код, который зацикливается в течение нескольких дней, а в некоторых случаях требуется выполнить вызов API. В случае, когда я тестировал, ему не требуется доступ к API. Я не мог найти проблему с моим кодом, пока не поместил строку между оператором if в комментариях. Затем я изменил if, чтобы всегда быть False, и ошибка сохранялась, когда строка кода отсутствовала в комментариях, даже если она никогда не могла достичь этого куска кода.



    for (let i = 0; i < dayArray.length; i+=1) {
      if (false) {
       const resultThatIsNotNeeded = await dispatch(getStuff(dayArray[i])
      }
      // more business logic
    }

Изменение для l oop ForEach l oop исправил эту проблему как-то. Но я действительно понятия не имею, почему это исправило это. Любая помощь приветствуется.

dayArray.forEach(async (day, i) => {
if (false) {
 const resultThatIsNotNeeded = await dispatch(getStuff(dayArray[i])
}
} 

1 Ответ

0 голосов
/ 06 марта 2020

Это потому, что в вашем forEach вызов await находится внутри функции asyn c, как и должно быть в On для l oop Я не вижу, чтобы какой-либо из этих кодов выполнялся в функции asyn c

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