为我的简单javascript函数添加回调功能

时间:2012-05-03 22:52:10

标签: javascript jquery

我不是在写插件。我只是在寻找一种简单干净的方法让自己知道某个函数何时完成执行ajax调用或其他什么。

所以我有这个:

function doSomething() {
...
   getCauses("", query, function () {
       alert('test');  
   });
...
}

function getCauses(value, query) {
//do stuff...
}

当然警报永远不会发生。我在getCauses中有一个$ .ajax调用,并希望在getCauses完成执行之后发出警报或执行某些操作,然后运行调用该函数的代码行。

想法?感谢。

3 个答案:

答案 0 :(得分:2)

首先需要将参数添加到getCauses

function getCauses(value, query, callback) {
}

然后,在$.ajax调用内部,调用AJAX完成回调中的回调参数:

$.ajax({
    // ...
    complete: function() {
        // Your completion code
        callback();
    }
});

答案 1 :(得分:0)

您正在传递回调函数但未执行它。

function doSomething() {
    ...
    getCauses("", query, function () {
        alert('test');  
    });
    ...
}

function getCauses(value, query, callback) {
    //do stuff...

    //stuff is done
    callback();
}

答案 2 :(得分:0)

只是使用了一些javascript技巧,这里的实现将允许您实现一些默认功能,在没有定义回调的情况下。如果99%的时间你想要一个通用的回调,那么这将是很好的,然后你只想在几个地方自定义它。

var my_callback = function() {
    alert('I am coming from the custom callback!');
}

var special_function(string_1, callback) {
    (callback || function() {
        // Default actions here
        alert('I am coming from the generic callback');
    })();
}

// This will alert "I am coming from the custom callback!"
special_function("Some text here", my_callback);

// This will alert "I am coming from the generic callback"
special_function("Some text here");

// This will do nothing
special_function("Some text here", function() {});

干杯!