1. 回调函数
优点:简单、容易理解和部署;
缺点:不利于代码的阅读和维护,各个部分之间高度耦合(Coupling),流程会很混乱,而且每个任务只能指定一个回调函数。
2. 事件监听
优点:可以绑定多个事件,每个事件可以指定多个回调函数,而且可以“去耦合”(Decoupling),有利于实现模块化;
缺点:整个程序都要变成事件驱动型,运行流程会变得很不清晰。
3. 发布/订阅
性质与“事件监听”类似,但是明显优于后者。
4. Promises对象
是CommonJS工作组提出的一种规范,目的是为异步编程提供统一接口。
简单说,它的思想是,每一个异步任务返回一个Promise对象,该对象有一个then方法,允许指定回调函数。