【promise相关】

概念

所谓Promise,就是一个待执行的事件,它主要就是用来解决回调地狱的问题,并且它的状态是不可逆的,他有三个状态: pending(等待态),fulfiled(成功态),rejected(失败态)

使用

Promise是一个构造函数,它接收一个参数是函数,接收的这个函数需要传入两个参数,分别是

  1. resolve :异步操作执行成功后的回调函数
  2. reject:异步操作执行失败后的回调函数
let p = new Promise((resolve, reject) => {
    //做一些异步操作
    setTimeout(() => {
        console.log('执行完成');
        resolve('我是成功!!');
    }, 2000);
})

之后可用通过then链式操作的用法

p.then((data) => {
    console.log(data);
})
.then((data) => {
    console.log(data);
})
.then((data) => {
    console.log(data);
})
从表面上看,Promise只是能够简化层层回调的写法,
而实质上,Promise的精髓是“状态”,用维护状态、传递状态的方式来使得回调函数能够及时调用,
它比传递callback函数要简单、灵活的多。

常用方法

捕获错误的方法 catch()

它用来指定reject的回调。用法:效果和写在then的第二个参数里面一样。不过它还有另外一个作用:在执行resolve的回调(如果抛出异常了),会进到这个catch方法中

解析全部方法 all()

Promise.all()方法接受一个数组作为参数,p1、p2、p3都是 Promise 实例 只有p1、p2、p3的状态都成功才还会返回成功

竞赛 race()

只要p1、p2、p3哪个最先改变状态,那么它的状态也随之更改

生成一个成功的promise resolve()

生成一个失败的promise reject()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PromiseJavaScript 中一种处理异步操作的机制,它帮助开发者更好地组织和管理异步代码,使得代码更易于理解和维护。Promise 对象有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。Promise 有以下几个主要的方法: 1. **`new Promise()`**:创建一个新的 Promise 对象,接受一个函数作为参数,这个函数有两个参数:resolve(成功回调)和 reject(失败回调)。 ```javascript const myPromise = new Promise((resolve, reject) => { // 异步操作 if (/* 成功 */) { resolve(value); } else { reject(error); } }); ``` 2. **`.then(onFulfilled, onRejected)`**:当 Promise 转变为 fulfilled 时,执行 onFulfilled 函数;如果变为 rejected,则执行 onRejected 函数。返回一个新的 Promise。 ```javascript myPromise.then(result => { // 处理成功结果 }, error => { // 处理错误 }); ``` 3. **`.catch(onRejected)`**:这是一个简写版的 `.then(null, onRejected)`,用于处理 Promise 的拒绝情况。 ```javascript myPromise.catch(error => { // 错误处理 }); ``` 4. **`.finally(onFinally)`**:无论 Promise 是否完成,都会执行 onFinally 函数,主要用于清理资源或做其他最终操作。 ```javascript myPromise.finally(() => { // 执行无论成功失败都会进行的操作 }); ``` 5. **`.all(arrayOfPromises)`** 和 **`.race(arrayOfPromises)`**:前者等待所有 Promise 全部成功后返回结果数组,后者则返回第一个完成的 Promise 结果。 6. **`Promise.resolve(value)`** 和 **`Promise.reject(error)`**:静态方法,用于直接创建已成功或已失败的 Promise。 7. **`.chain()` 或 `.then().then()`**:链式调用,用于在一系列的异步操作之间建立依赖关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值