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