我试图理解为什么函数lazy_2
不会以这种方式运行:
function lazy_1 (callback) {
alert('lazy_1');
}
function lazy_2 () {
alert('lazy_2');
}
lazy_1(lazy_2);
? (通过Execute jquery function after another function completes。)
jQuery方法效果很好:
function lazy_1 (callback) {
alert('lazy_1');
}
function lazy_2 () {
alert('lazy_2');
}
$.when( lazy_1() ).done(function() {
lazy_2();
});
答案 0 :(得分:4)
因为lazy_1()
没有调用它的回调 - 事实上没有人这样做。对于要调用的回调,它需要看起来像这样:
function lazy_1 (callback) {
alert('lazy_1');
callback();
}
function lazy_2 () {
alert('lazy_2');
}
lazy_1(lazy_2);
上面的第二个代码块相当于:
lazy1();
lazy2();
因为您只是要求jQuery $.when()
运行一个函数,然后另一个函数没有任何承诺(所有同步代码)。
答案 1 :(得分:2)
您必须实际拨打callback
。
function lazy_1 (callback) {
alert('lazy_1');
callback();
}
function lazy_2 () {
alert('lazy_2');
}
lazy_1(lazy_2);