所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。
1 |
const p = new Promise((resolve, reject) => { |
在then方法中,我们可以return一个Promise对象,然后链式调用then方法
1 |
const p = new Promise((resolve, reject) => { |
catch用来捕获reject的返回值,每个链式调用只能有一个catch,不管哪个then中出现了reject,都会被catch捕获到。一旦出现reject,接下来的then都不会再执行。
Promise.all() & Promise.race()
Promise.all() 和 Promise.race() 用来并发执行所有的promise。
1 |
const p1 = new Promise((resolve, reject) => { resolve(1); }) |
对于Promise.all()
- 只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时
p1、p2、p3的返回值组成一个数组
,传递给p的回调函数。 - 只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。
对于Promise.race()
- 只有p1,p2或p3的任意一个有了resolve,Promise.race()就会执行一个then,then的参数就是当前resolve的返回值。
- 只要p1、p2、p3之中有一个被reject,Promise.race()就会执行catch,catch的参数就是当前reject的返回值。
Promise.resolve()
将入参作为一个Promise返回,入参可以是
- 一个Promise实例
- thenable对象
- 一个原始值
- 一个一个不具有then方法的对象
- 没有入参
近期评论