我的代码有问题。特别是我想在 keyup 事件之后依次调用 2 回调。
$('myDiv').keyup(function(){
function1
function2
});
是否可以在下一个函数开始之前等待第一个函数的加载(function1
有 SQL 请求、附加行等)?
坦克很多
我的代码有问题。特别是我想在 keyup 事件之后依次调用 2 回调。
$('myDiv').keyup(function(){
function1
function2
});
是否可以在下一个函数开始之前等待第一个函数的加载(function1
有 SQL 请求、附加行等)?
坦克很多
将第二个函数放入第一个的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);
});
有两种解决方案,具体取决于函数在做什么。
function1
不包含异步调用/代码:
只需将语句放在一起:
function1();
function2();
function1
包含异步调用/代码(我假设这是你的情况)
然后你必须function2
作为回调传递并在处理响应function1
时调用它:function1
function1(function2);
function1
例如:
function function1(cb) {
$.ajax({ // asynchronous call
//...
success: function(data) {
// response handled here
cb(); // call the callback
}
});
}
Javascript 是单线程的,它只会在完成function2
后评估function1
。但是,如果您正在执行 AJAX,function1
则情况并非如此(AsynchronousJAX),您可能希望通过将调用放在function2
AJAX 调用的响应处理程序中来解决此问题function1
。