React Native - setTimeout внутри цикла - PullRequest
0 голосов
/ 07 декабря 2018

Я заметил странное поведение с React Native при запуске setTimeout внутри цикла for.Приведенный ниже код хорошо работает в браузере:

const myString = '111000111';

for(var x =0; x < myString.length; x++) {
  if (myString[x] == '1') {
    (function(index) {
      setTimeout(()=>{
        console.log('number ' + index);
      }, index * 1000);
    })(x)
  }
}

Результат в браузере:

number 0
number 1
number 2
number 6
number 7
number 8

Но при запуске того же кода с React Native получается:

number 0
number 1
number 8
number 2
number 7
number 6

1 Ответ

0 голосов
/ 07 декабря 2018

Нет гарантии, когда и в каком порядке будут срабатывать тайм-ауты, и разные реализации JS будут давать разные результаты (например, если приложение RN занимается чем-то другим, оно может запустить тайм-аут позже).

Если вам нужно, чтобы они были в определенном порядке, вам нужно изменить реализацию, использовать очередь или что-то в этом роде.

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