关于‘Promise’

84 阅读2分钟

什么是Promise?

Promise是一种解决异步编程的方案,相比回调函数和时间更合理更强大。从语法上讲,promise是一个对象,从他可以获取异步操作的信息;

1、promise有三种状态

  • pending,初始状态也叫等待状态
  • fulfiled,成功状态
  • rejected失败状态 状态一旦改变,就不会再变,创造promise实例后,它会立即执行。

2、promise的两个特点

1.promise对象的状态不受外界影响

2.promise的状态一旦改变,就不会再变,任何时候都可以得到这个结果,状态不可逆。

3、promise的三个缺点

1.无法取消promise,一旦新建它就会立即执行,无法中途取消。

2.如果不设置回调函数,promise内部抛出的错误,不会反映到外部

3.当处于pending状态时,无法得知目前进展到哪一个阶段,是刚刚开始还是即将完成。

4.解决的问题

1.回调地狱,常常第一个函数的输出是第二个函数的输入的这种情况。

2.promise可以支持多并发的请求,获取并发请求中的数据。

5. 扩展

假如场景要求同时执行多个异步操作,比如:

  • 多表单校验:只有所有表单都校验通过才能提交
  • 多接口请求:只有所有接口都请求成功才能进行下一步操作 可以用到promise.all这个方法, 接受一个promise数组,执行结果然后返回一个新的promise,所有promise都成功,返回的promise才是成功;如果一个失败,则返回失败。

所以可以用ES2020的js新语法promise.allSettled

它可以:接受一个promise数组,执行结果返回一个成功的promise

image.png