js异步编程4种方法(以jQuery的写法为例) -- 来自阮一峰2012年的文章
1.回调函数
function f1(callback) {setTimeout(function(){// f1的代码 callback()})}
=> 使用 f1(f2)
2.事件监听
function f1(){setTimeout(function(){// f1的代码 f1.trigger('done')})}
=> 使用 f1.trigger('done')
3.发布/订阅
function f1(){setTimeout(function(){// f1的代码 jQuery.publish('done')})}
=> 使用 jQuery.subscribe('done',f2). ps.完成后可以使用unsubscribe取消订阅
4.Promise对象
function f1(){var dfd = $.Deferred() setTimeout(function(){// f1的代码 dfd.resolve() },500) return dfd.promise}
=> 使用 f1().then(f2) or f1().then(f2).then(f3) or f1().then(f2).fail(f3)