1

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

所以我有这个:

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

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

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

想法?谢谢。

4

3 回答 3

2

您首先需要将参数添加到getCauses

function getCauses(value, query, callback) {
}

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

$.ajax({
    // ...
    complete: function() {
        // Your completion code
        callback();
    }
});
于 2012-05-03T22:56:23.233 回答
0

你正在传递你的回调函数,但没有执行它。

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

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

    //stuff is done
    callback();
}
于 2012-05-03T22:56:49.423 回答
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() {});

干杯!

于 2012-05-03T23:08:08.320 回答