Es6

- 使用 generator 重写
- 增加测试用例

#8 
这个好像没啥用