适合移动端的 Promise/A+ 实现