我在我的反应原生应用中使用setTimeout,如下所示:
run() {
console.log('test');
let x = setTimeout(()=>{
this.run();
}, 500);
}
componentDidMount() {
this.run();
}
我测试了10个具有上述代码的组件并同时渲染它们,这大大减慢了应用程序的速度。有没有办法在不影响应用程序性能的情况下运行多个setTimeout?谢谢。
答案 0 :(得分:0)
似乎你的代码是递归的,但没有停止条件。基本上,你调用一个自称的函数,等等,没有结束。
答案 1 :(得分:0)
我想通了,设置setTimeout时,将它分配给一个唯一的变量很重要。像:
// for component 1
let loop1 = setTimeout(()=>{
this.run();
}, 500);
// for component 2
let loop2 = setTimeout(()=>{
this.run();
}, 500);
// for component 3
let loop3 = setTimeout(()=>{
this.run();
}, 500);
依旧......
当10个组件共享相同的setTimeout变量时,最后一个组件将被优先处理,因此最后一个组件将是唯一一个正在运行的组件,其余组件将挂起。
我的问题现在已经解决了。 :)