feat(Circle): using setTimeout instead of setInterval (#4401)

This commit is contained in:
ascodelife 2021-08-18 10:47:44 +08:00 committed by GitHub
parent e07f9f9581
commit 41457c899b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -181,27 +181,31 @@ VantComponent({
return; return;
} }
this.clearInterval(); this.clearMockInterval();
this.currentValue = this.currentValue || 0; this.currentValue = this.currentValue || 0;
this.interval = setInterval(() => { const run = () => {
if (this.currentValue !== value) { this.interval = setTimeout(() => {
if (Math.abs(this.currentValue - value) < STEP) { if (this.currentValue !== value) {
this.currentValue = value; if (Math.abs(this.currentValue - value) < STEP) {
} else if (this.currentValue < value) { this.currentValue = value;
this.currentValue += STEP; } else if (this.currentValue < value) {
this.currentValue += STEP;
} else {
this.currentValue -= STEP;
}
this.drawCircle(this.currentValue);
run();
} else { } else {
this.currentValue -= STEP; this.clearMockInterval();
} }
this.drawCircle(this.currentValue); }, 1000 / speed);
} else { };
this.clearInterval(); run();
}
}, 1000 / speed);
}, },
clearInterval() { clearMockInterval() {
if (this.interval) { if (this.interval) {
clearInterval(this.interval); clearTimeout(this.interval);
this.interval = null; this.interval = null;
} }
}, },
@ -216,6 +220,6 @@ VantComponent({
}, },
destroyed() { destroyed() {
this.clearInterval(); this.clearMockInterval();
}, },
}); });