Vuex 无法停止 setInterval
Vuex can't stop setInteval
我在 Vuex 中有一个方法:
export const startTime = ({ commit, state }, status) => {
let timeInterval
if(status) {
const timer = 1000
timeInterval = setInterval(() => {
console.log('x')
commit('SET_RUNNED_TIME', parseInt(state.runnedTime += timer))
}, timer)
}
else {
console.log('y')
clearInterval(timeInterval)
commit('SET_RUNNED_TIME', 0)
}
}
我从我的组件发送值 true
或 false
到方法 startTime()
。当我发送 true
然后方法 运行 提交 SET_RUNNED_TIME
。但是当我发送 false
clearInterval(timeInterval)
时没有停止 setInterval
并且仍在发送 commit('SET_RUNNED_TIME' ...)
变量timeInterval
在函数范围内。如果你想让它在对 startTime
的不同调用之间继续存在,你需要把它放在函数范围之外。比如在州。
我在 Vuex 中有一个方法:
export const startTime = ({ commit, state }, status) => {
let timeInterval
if(status) {
const timer = 1000
timeInterval = setInterval(() => {
console.log('x')
commit('SET_RUNNED_TIME', parseInt(state.runnedTime += timer))
}, timer)
}
else {
console.log('y')
clearInterval(timeInterval)
commit('SET_RUNNED_TIME', 0)
}
}
我从我的组件发送值 true
或 false
到方法 startTime()
。当我发送 true
然后方法 运行 提交 SET_RUNNED_TIME
。但是当我发送 false
clearInterval(timeInterval)
时没有停止 setInterval
并且仍在发送 commit('SET_RUNNED_TIME' ...)
变量timeInterval
在函数范围内。如果你想让它在对 startTime
的不同调用之间继续存在,你需要把它放在函数范围之外。比如在州。