VUE의 setTimeout 및 setInterval 자동 제거 사례
1810 단어 VUEsetTimeoutsetInterval없애다
일반 코드는 다음과 같습니다.
beforeDestroy() {
this._timer && clearTimeout(this._timer);
}
하지만 자칫 잊어버리고 예상치 못한 상황을 초래할 수 있다면 어떻게 피할 수 있을까?물론 있습니다. 그것은 set Timeout을 다시 쓰는 방법입니다. (아니면 아예 윈도우.set Timeout을 납치하는 것입니다.)
var _pageTimer = [];
Vue.prototype.setTimeout = (fn, time) => {
let handler = window.setTimeout(fn, time);
_pageTimer.push(handler);
return handler;
}
라우팅 차원에서 페이지가 변경될 때마다 정리 작업을 수행합니다.router.beforeEach((to, from, next) => { _pageTimer.map(handler => { window.clearTimeout(handler); }) })
다시 페이지를 사용할 때 Vue의 set Timeout을 호출하면 훨씬 편리하지 않을까요?set Interval도 마찬가지입니다.
이 방법은 페이지의 비동기적인 요청에 대한 aax 처리에도 적용됩니다. aax의handler를 가져와서 절단면을 전환할 때handler를 호출할 수 있습니다.abort () 요청을 취소하여 서버 자원에 대한 불필요한 압력을 피하십시오.
추가 지식: vue에서 setTimeout을 사용하고 페이지를 종료한 후 타이머가 삭제되지 않았습니다
문제: 페이지가 setTimeout을 사용하여 시간을 순환하거나 두 페이지 사이의 시간 간격이 타이머보다 작을 때 타이머가 실행됩니다.
이유: 우리가 페이지를 새로 고칠 때, 현재 페이지가 이전에 만든 setTimeout과 다른 타이머를 모두 지우지만, 루트 전환만으로는 지우지 않습니다.
data (){
return{
clearTime: ''
}
},
mounted () {
randomGet () {
// 1 2
var r = Math.random() * (2 - 1) + 1
var t = Math.ceil(r * 60000)
// console.log(t)
this.clearTime = setTimeout(() => {
this.submit()
this.randomGet()
}, t)
},
submit () {
console.log('aaaa')
}
},
destroyed () {
clearTimeout(this.clearTime) //
}
위의 VUE에서 set Timeout과 set Interval 자동 삭제 사례는 바로 편집자가 여러분에게 공유한 모든 내용입니다. 참고 부탁드리고 저희도 많이 사랑해 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
VUE 기반 장치가 PC인지 모바일 포트인지 판단실제 개발 과정에서 자주 발생하는 수요는 현재 웹 페이지에 로그인한 장치가 PC인지 이동인지를 판단하고 PC 측과 모바일 측이 서로 다른 웹 내용을 표시하도록 요구하는 것이다. 그러면 현재 로그인 장치에 대한 판단이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.