2017-08-10 48 views
0

我在使用的setTimeout我的反應,本機應用程序是這樣的:到在同時運行多個setTimeout的有效的方式作出反應原住民

run() { 

    console.log('test'); 

    let x = setTimeout(()=>{ 
    this.run(); 
    }, 500); 
} 

componentDidMount() { 
    this.run(); 
} 

我測試了其上面的代碼,同時使其10個組件時間,它大大減緩了應用程序。有沒有辦法在不影響應用程序性能的情況下運行多個setTimeout?謝謝。

回答

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變量,最後一個組件將被優先考慮,因此最後一個組件將是唯一一個運行,其餘的將掛斷。

我的問題現在整理出來。 :)

0

看起來你的代碼是遞歸的,但沒有停止條件。基本上,你可以調用一個自稱的函數等等,而沒有結束。

+0

是的,它是遞歸的,我故意將它設置爲無限或不停止來測試一個原始應用程序可以處理的setTimeout數量。 –

相關問題