jQuery创建回调函数

3

我希望能在一个简单的函数上创建一个回调。

我有一个函数,在按钮单击时被调用:

function main(){ };

所以我希望 main() 完成后调用这个函数:

 function test(){ }
3个回答

4
function main(callback) {
    // ... do your thing
    callback();
}

main(function(){
    alert('this is the callback speaking');
});

@jQuerybeast:你将test函数作为maincallback参数传递。我更新了我的答案并提供了更多细节。 - Michael Robinson

3

如果主函数未使用Ajax,则可以使用:

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

function test(){}

eg:
<input type="button" onclick="main(test);"/>

如果主函数(main())使用了Ajax,则可以在complete函数中如下调用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('snippet', '5', main);因此,如果我将main替换为main(test),它就无法编译。 - jQuerybeast
在这种情况下,您将需要使用类似 API.loadAndWait('snippet', '5', function() {main(test);}); 的东西。 - devnull69

1

我理解它很简单,如果我没有说到点上,请原谅。

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


function test() {
// ... do your thing in test

}

这正是我所想的,但测试是在主函数中执行的。 - jQuerybeast
那么有什么区别呢?如果你想在主函数之后执行测试,就是这样。或者如果你想在主函数几分钟后调用测试,请使用setTimeout("test()",3000);。然后它将在3000毫秒后被调用。 - sampathpremarathna
只有在你在主函数中完成所有必要的操作之后才能执行test(),而不是在此之前。我们不知道你的代码,因此无法猜测在哪里调用test()。展示更多的代码,我们可以帮助你。 - devnull69

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接