javascript - React Native - setTimeout 循环内

标签 javascript reactjs react-native ecmascript-6

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/

相关文章:

javascript - React-Router npm 包在控制台中给我警告? (不推荐使用 PropTypes)

javascript - 如何通过单击链接在两个 html 页面之间切换

javascript - SetTimeout:按顺序排列事件

javascript - 在一种条件下定位多个表单元素

react-native - 为什么 react native webview injectedJavascript 在 IOS 上不起作用?

reactjs - 如何编写单元测试来调用 useEffect 中的函数?

reactjs - mapStateToProps 可以缩小 props 的类型吗?

javascript - React Native 无法返回数组

react-native - Switch & SwitchAndroid 在 Android 中不工作

reactjs - 在 React Native 上将缓冲区图像解析为 base64