參考:https://stackoverflow.com/que...this
問題:當前模塊只須要一個定時器。可是若是有多個地方調用getData()會出現多個定時器code
private timer = null; private setTimer() { this.timer = setTimeout(function () { this.getData(); }.bind(this), 5000); } getData() { http.get('getxxxData', () => { //.... this.setTimer(); }); }
解決方法:在啓動新的定時器以前判斷上一個定時器是否正在運行,若是正在運行,就清除正在進行的定時器,再從新開啓定時器。 但遺憾的是, 除了啓動或中止計時器以外,沒有其餘方法能夠與計時器交互。get
在啓動定時器以前檢測若是定時器不爲null,須要清除定時器 private timer = null; private clearPollTimer() { window.clearTimeout(this.timer); this.timer = null; } private setTimer() { if (this.timer !== null) { this.clearPollTimer(); } this.timer = setTimeout(function () { this.getData(); }.bind(this), 5000); } getData() { http.get('xxxx', () => { //.... this.setTimer(); }); }