谈谈对于Promise的理解?

Promise是JavaScript中解决异步编程复杂性的一种方式,主要用于避免回调地狱。它有三种状态:pending、fulfilled和rejected。当Promise被创建时,它处于pending状态,通过resolve或reject改变状态。Promise.all用于并行执行多个异步操作,所有操作完成后才会执行then中的回调,返回的结果是一个包含所有异步操作值的数组。
摘要由CSDN通过智能技术生成


1、什么是Promise?

1.1  Promise的由来

Promise 是一种 JavaScript 异步编程的解决方案,用于解决异步编程中的回调地狱问题,其实是一个构造函数,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。

2、Promise的用法

2.1 Promise的三种状态

 pending(默认),fulfilled(成功),rejected(失败)

   Promise 对象代表一个异步操作的最终完成状态(即成功或失败),可以获取异步操作的结果。Promise 有三种状态:pending(默认)、fulfilled(成功)和 rejected(失败)。

   当一个 Promise 对象被创建时,它处于 pending 状态,回调中接收两个方法 resolve(成功) reject(失败),在异步操作完成后,会根据操作结果改变 Promise 对象的状态,结果成功就会从pending状态转换到fulfilled状态,失败则从pending状态转换到rejected状态,只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。

2.2  Promise的用法

     两种方法   resolve()  ,reject()

     在使用 Promise 时,可以通过 new Promise 构造函数创建一个 Promise 对象,然后在 Promise 对象中执行异步操作,通过 resolve() 和 reject() 方法改变 Promise 对象的状态。在对 Promise 对象进行 then() 和 catch() 方法的注册后,异步操作完成后会自动调用对应的回调函数。如果这个异步操作发生错误,则会调用 catch() 方法进行错误处理

3、Promise的赛跑机制

3.1  赛跑机制

      Promise.all

     all接收一个数组参数,这组参数为需要执行异步操作的所有方法,里面的值最终都算返回Promise对象。这样,多个异步操作的并行执行的,等到它们都执行完后才会进到then里面。那么,多个异步操作返回的数据哪里去了呢?都在then里面,all会把所有异步操作的结果放进一个数组中传给then,然后再执行then方法的成功回调将结果接收,结果如下:(分别执行得到结果,all统一执行完所有的函数并将值存在一个数组里面返回给then进行回调输出)这样以后就可以用all并行执行多个异步操作,并且在一个回调中处理所有的返回数据,比如你需要提前准备好所有数据才渲染页面的时候就可以使用all,执行多个异步操作将所有的数据处理好,再去渲染

       Promise 的赛跑机制可以同时对多个Promise 实例进行异步操作,Promise 还支持链式调用,可以提高代码的可读性和可维护性

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值