一、回调函数需求假定有两个函数f1和f2,后者等待前者的执行结果。代码 f1(); f2(); //如果f1是一个很耗时的任务,可以考虑改写f1,把f2写成f1的回调函数。 function f1(callback){ setTimeout(function () { // f1的任务代码 callback(); }, 1000); } //执行代码就变成下面这样: f1(f2); 二、事件监听代码 f1.on('done', f2); //上面这行代码的意思是,当f1发生done事件,就执行f2。然后,对f1进行改写: function f1(){ setTimeout(function () { // f1的任务代码 f1.trigger('done'); }, 1000); } 三、发布/订阅 代码 //首先,f2向"信号中心"jQuery订阅"done"信号。 jQuery.subscribe("done", f2); //然后,f1进行如下改写: function f1(){ setTimeout(function () { // f1的任务代码 jQuery.publish("done"); }, 1000); } //向"信号中心"jQuery发布"done"信号,从而引发f2的执行。 //f2完成执行后,也可以取消订阅(unsubscribe) jQuery.unsubscribe("done", f2); 四、Promises对象代码 function f1(){ var dfd = $.Deferred(); setTimeout(function () { // f1的任务代码 dfd.resolve(); }, 500); return dfd.promise; }