Promise基础用法2
Promise的静态方法
Promise.resolve()
Promise.resolve()能快速的将一个传入的值转为Promise对象
等价于
如果传入的是一个 Promise 对象,Promise.resolve 方法原样返回
如果传入的是带有一个跟 Promise 一样的 then 方法的对象, Promise.resolve 会将这个对象作为 Promise 执行。
Promise.reject()
Promise.reject()能快速创建一个必定失败的promise对象。Promise.reject 传入任何值,都会作为这个 Promise 失败的理由。
Promise的并行执行
Promise.all
在实际工作中,如果由多个没有依赖的请求,我们可以采用并行处理的方式,但是若某一个请求需要等待这几个并行的请求全部处理完成后才能触发,我们可以定义一个累加的变量,当变量的值等于请求的个数时,就代表了请求全部完成。在promise中,可以使用Promise.all()方法解决这种问题。
Promise.race
Promise.race同样也能将多个promise组合成一个全新的promise对象,但是Promise.all()是需要等待所有任务结束,而 Promise.race则只会等待所有任务中的第一个结束的任务即可,可以用于超时控制。
Promise执行时序
- setTimeout 的回调是 宏任务,进入回调队列排队
- Promise 的回调是 微任务,本轮调用末尾直接执行