javascript - 如何构建回调方法?

标签 javascript closures

我正在尝试在 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/

相关文章:

javascript - 使用 eq() 和 find() 添加类

javascript - 检查类名是否等于某个名称的 If 语句

generics - Rust Option<impl Fn(i64)> 的空显式泛型参数

haskell - 闭包是否违反了函数式编程范式?

javascript - 关于 JavaScript 软件分解结构指南

javascript - 如何使用 jQuery 通过单击按钮来获取表中选中的行数?

javascript - 将 NodeJS 用于大型项目

javascript - 如何调试失败的 Angular 选择(或任何其他类型)绑定(bind)?

Javascript 函数(来自闭包)

c# - 滥用闭包?违反各种原则?或者好吗?