// 用来异步编程,优雅处理异步回调,避免回调地狱
/** Promise A / Promise A+ 规范:
Promise 会有三种状态 Pending 等待 Fulfilled 完成 Rejected 失败 状态只能由 Pending --> Fulfilled 或者 Pending --> Rejected,且一但发生改变便不可二次修改;
传入excutor(resolve,reject), resolve/reject 回调函数调用, 用来改变状态 then 函数,添加回调函数 then 链式调用 => 返回Promise 对象本身 then 可以多次添加, => 队列数组来保存 callbacks[] all 函数 race 函数 */