在 for
循环内运行 setTimeout
时,我注意到 React Native 出现了奇怪的行为。下面的代码在浏览器上运行良好:
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
最佳答案
无法保证何时以及以何种顺序触发超时,并且不同的 JS 实现将产生不同的结果(例如,如果 RN 应用程序正忙于执行其他操作,则可能会稍后触发超时)。
如果您需要它们按特定顺序排列,则需要更改实现,使用队列或类似的东西。
关于javascript - React Native - setTimeout 循环内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53668663/