【问题标题】:jQuery Create CallbackjQuery 创建回调
【发布时间】:2011-12-15 06:55:40
【问题描述】:

我想为一个简单的函数创建一个回调。

我有这个在按钮点击时调用的函数:

function main(){ };

所以我想main(),当它完成调用这个时:

 function test(){ }

【问题讨论】:

    标签: javascript jquery callback


    【解决方案1】:
    function main(callback) {
        // ... do your thing
        callback();
    }
    
    main(function(){
        alert('this is the callback speaking');
    });
    

    【讨论】:

    • @jQuerybeast:您将test 函数作为maincallback 参数传递。用更多细节更新了我的答案
    【解决方案2】:

    如果main()函数不使用ajax,可以使用:

    function main(callback) {
        // ... do your thing
        callback();
    }
    
    function test(){}
    
    eg:
    <input type="button" onclick="main(test);"/>
    

    如果 main() 函数使用 ajax,你可以像这样在完整的函数中调用 test():

    function main(callback){
        $.ajax({
            ...
            complete: function(XMLHttpRequest, textStatus){
                callback(); 
            },
            ...
        });
    }
    
    function test(){
        ...
    }
    eg:
    <input type="button" onclick="main(test);" value="test"/>
    

    【讨论】:

    • 您好,谢谢。我没有使用ajax。在您的第一个示例中,API 不允许我调用 main(test)。示例:API.loadAndWait('sn-p', '5', main);所以如果我用 main(test) 替换 main 它不会编译
    • 在这种情况下,您将不得不使用类似API.loadAndWait('snippet', '5', function() {main(test);});
    【解决方案3】:

    按照我的理解,它很简单,如果我不重要,对不起。

    function main() {
    // ... do your thing
    test();
    }
    
    
    function test() {
    // ... do your thing in test
    
    }
    

    【讨论】:

    • 我是这么想的,但是测试是用main来执行的
    • 那么有什么区别呢?如果你想在 main 之后执行测试就是这样。或者如果你想在 main 使用 setTimeout("test()",3000); 几分钟后调用 test .然后会在3000毫秒后调用。
    • 当你只执行test() after(!) 时,你在 main() 中做了你必须做的任何事情。我们不知道您的代码,因此我们无法猜测您必须在代码中的哪个位置调用test()。向我们展示更多代码,我们可以帮助您
    猜你喜欢
    • 1970-01-01
    • 2023-01-15
    • 2013-02-28
    • 2015-07-21
    • 2011-09-13
    • 2013-07-21
    • 2019-10-29
    • 2015-03-19
    • 1970-01-01
    相关资源
    最近更新 更多