在 js 中是单线程的, 所谓的异步是假的.
  | 
  | 
  | 
  | 
简单分析:
1.  代码从上往下运行, 执行第一个 打印, 打印出 console1
2.  有一个异步代码, 将函数投递到数组中. 
3.  打印, 就打印出 console2
4.  有看到一个计时器, 又将函数存储到数组中
5.  又看到了打印, 所以打印出 console3
6.  代码执行完, 将数组中的函数依次执行. 同时清空数组.
Quick notes
  | 
  | 
  | 
  | 
简单分析:
1.  代码从上往下运行, 执行第一个 打印, 打印出 console1
2.  有一个异步代码, 将函数投递到数组中. 
3.  打印, 就打印出 console2
4.  有看到一个计时器, 又将函数存储到数组中
5.  又看到了打印, 所以打印出 console3
6.  代码执行完, 将数组中的函数依次执行. 同时清空数组.