加上一种promise的实现