如果在时间为 运行 时收到数据,如何重置 setTimeout?
How to reset a setTimeout if you receive data while time is running?
我在我的 VUE 应用程序中有一个文本类型的输入,我在其中收集数据,当我完成收集它时,我必须显示另一个组件。
<input
type="text"
v-model="textFormInfo.text"
@keypress="onChangeText($event)"
/>
<div class="loader-spinner" v-if="loading">
<app-loader ref="spinner"/>
</div>
这是我控制交互的方法。当他们开始输入输入时,我通过按键进行检测,当有 .length 时,我启动一个 settimeout 来给他们时间来输入和显示加载程序并加载下一个组件。
export default {
data() {
return {
myTimeout: null
};
},
onChangeName(event) {
if (event.target._value.length > 0) {
this.loading = true;
this.myTimeout = setTimeout(() => (
this.isNameCompleted = true,
this.loading = false,
this.isLoaderFinished = true,
this.$refs.scrolled_3.focus()), 2200);
}
}
问题是,如果您键入的速度慢或信息太长,则在您完成键入之前会显示下一个组件。
我试图确保每次收到按键事件时都会重置 settimeout,以便仅在我停止接收按键时应用总的 settimeout 值。
我尝试按照使用 clearTimeout 方法的示例进行操作,但我不知道在这种情况下如何实现它。
我怎样才能得到这个?任何想法。
问候并提前感谢您的时间和帮助
我认为你在这里试图实现的是去抖动,如果我是正确的,你可以像这样为每一次 kry 按下我们创建一个超时,如果键在特定时间内没有按下,settimeout 中的方法将是叫
var timeoutId = 0;
function keypress() {
if (timeoutId >= 0) {
clearTimeout(timeoutId);
}
timeoutId = window.setTimeout(() => {
callMethod();
}, 500);// time to wait to listen for next keypress if not pressed callMethod will execute
}
我在我的 VUE 应用程序中有一个文本类型的输入,我在其中收集数据,当我完成收集它时,我必须显示另一个组件。
<input
type="text"
v-model="textFormInfo.text"
@keypress="onChangeText($event)"
/>
<div class="loader-spinner" v-if="loading">
<app-loader ref="spinner"/>
</div>
这是我控制交互的方法。当他们开始输入输入时,我通过按键进行检测,当有 .length 时,我启动一个 settimeout 来给他们时间来输入和显示加载程序并加载下一个组件。
export default {
data() {
return {
myTimeout: null
};
},
onChangeName(event) {
if (event.target._value.length > 0) {
this.loading = true;
this.myTimeout = setTimeout(() => (
this.isNameCompleted = true,
this.loading = false,
this.isLoaderFinished = true,
this.$refs.scrolled_3.focus()), 2200);
}
}
问题是,如果您键入的速度慢或信息太长,则在您完成键入之前会显示下一个组件。 我试图确保每次收到按键事件时都会重置 settimeout,以便仅在我停止接收按键时应用总的 settimeout 值。
我尝试按照使用 clearTimeout 方法的示例进行操作,但我不知道在这种情况下如何实现它。 我怎样才能得到这个?任何想法。
问候并提前感谢您的时间和帮助
我认为你在这里试图实现的是去抖动,如果我是正确的,你可以像这样为每一次 kry 按下我们创建一个超时,如果键在特定时间内没有按下,settimeout 中的方法将是叫
var timeoutId = 0;
function keypress() {
if (timeoutId >= 0) {
clearTimeout(timeoutId);
}
timeoutId = window.setTimeout(() => {
callMethod();
}, 500);// time to wait to listen for next keypress if not pressed callMethod will execute
}