1

我的代码有问题。特别是我想在 keyup 事件之后依次调用 2 回调。

$('myDiv').keyup(function(){ 

 function1
 function2

});

是否可以在下一个函数开始之前等待第一个函数的加载(function1有 SQL 请求、附加行等)?

坦克很多

4

3 回答 3

3

将第二个函数放入第一个的ajax方法回调中,例如:

function first(cb) {
    // request something. Passed in function will execute
    // once the request has completed.
    $("#foo").load('/foo', cb);
}

function second() {
    // do something
}

$('myDiv').keyup(function(){ 
    first(second);
});
于 2011-04-11T12:54:09.910 回答
1

有两种解决方案,具体取决于函数在做什么。

  1. function1不包含异步调用/代码:
    只需将语句放在一起:

    function1();
    function2();
    
  2. function1包含异步调用/代码(我假设这是你的情况)
    然后你必须function2作为回调传递并在处理响应function1时调用它:function1

    function1(function2);
    

    function1例如:

    function function1(cb) {
        $.ajax({ // asynchronous call
            //...
            success: function(data) {
                // response handled here
                cb(); // call the callback
            }
        });
    }
    
于 2011-04-11T12:54:27.607 回答
0

Javascript 是单线程的,它只会在完成function2后评估function1。但是,如果您正在执行 AJAX,function1则情况并非如此(AsynchronousJAX),您可能希望通过将调用放在function2AJAX 调用的响应处理程序中来解决此问题function1

于 2011-04-11T12:55:21.733 回答