使用promise代替callback，使代码更精简