我正在尝试在 Javascript 中构建一个简单的类,它允许用户检查用户是否在输入字段中键入。
我当前的代码如下所示:
var CheckTyping = function(){
return {
typingTimer: null,
doneTypingInterval: 2000,
doneTyping : false,
done : function(callback){
return callback();
},
start: function(){
clearTimeout(this.typingTimer);
this.typingTimer = setTimeout(this.done, this.doneTypingInterval);
},
end: function(){
clearTimeout(this.typingTimer);
}
}
}();
HTML:
<input onkeyup='CheckTyping.start()' onkeydown='CheckTyping.end()'>
我希望我的 API 看起来像这样: JS
CheckTyping.done(function(){
// this is my callback function which should work only when user is done typing.
// do something
});
目前回调函数正在自动执行。我希望该函数仅在被 setTimeout 调用时运行
最佳答案
你可以尝试类似的方法
return (function() {
var _done = null;
return {
typingTimer: null,
doneTypingInterval: 2000,
doneTyping : false,
done : function(callback){
_done = callback;
},
start: function(){
clearTimeout(this.typingTimer);
this.typingTimer = setTimeout(_done, this.doneTypingInterval);
},
end: function(){
clearTimeout(this.typingTimer);
}
};
}())
或者其他方式保存回调。然后在超时时使用保存的函数。您可能想要更改逻辑,以便 end() 方法触发回调而不是超时。线索是你必须将回调保存在某个地方,正如所写的,你只是在使用 did 方法时触发了回调。
关于javascript - 如何构建回调方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135119/