js promise 基本使用方法

Promise就是一个类

1、promise三种状态 pending fulfilled rejected

// promise 的特点以及概念
// https://promisesaplus.com/ promisea+ 规范 都通过这个规范来实现的

// promise es6 内部已经实现了。 ie以下不支持promise,通过mdn,can i use 可以查询到浏览器支持情况 需要polyfill  es6-promise


// promise 为什么会产生  解决异步问题

// 1.多个异步请求并发 (希望同步最终的结果) Promise.all
// 2.链式异步请求的问题 上一个人的输出是下一个人的输入,形成恶魔金字塔  Promise的链式调用可以解决这个问题
// 3.缺陷:还是基于回调的

// 1.promise 有三个状态:成功态(会调用resolve) 失败态(会调用reject) 等待态(pending)(又不成功又不失败)
// promise就是一个类

let promise = new Promise((reso,reje) => {

})
console.log(promise)

let promise = new Promise((reso,reje) => {
    reso('发工资')
})
console.log(promise)

let promise = new Promise((reso,reje) => {
    reje('没发工资')
})
console.log(promise)

 

2、用户自己决定失败的原因和成功的原因 成功和失败也是用户定义的

3、promise 默认执行器是立即执行

let promise = new Promise((reso,reje) => {
    console.log(1)
})
console.log(2)

4、promise的实例都拥有一个then方法

let promise = new Promise((reso,reje) => {
    reso('成功')
})

promise.then((data)=>{
    console.log('success',data)
},(err)=>{
    console.log('failed',err)
})

5、如果执行函数时发生了异常也会执行失败逻辑

let promise = new Promise((reso,reje) => {
    throw new Error('失败了')
})

promise.then((data)=>{
    console.log('success',data)
},(err)=>{
    console.log('failed',err)
})

6、如果promise一旦成功就不能失败,反过来也一样

let promise = new Promise((reso,reje) => {
    throw new Error('失败了')
    reso('成功')
})

promise.then((data)=>{
    console.log('success',data)
},(err)=>{
    console.log('failed',err)
})

7、promise 成功和失败的回调的返回值 可以传递到外层的下一个then

8、如果返回的是普通值的话 (传递到下一次的成功中,不是错误不是promise就是普通值) ,出错的情况(一定会走到下一次的失败),可能还要promise的情况(会采用promise的状态,决定走下一次的成功还是失败 )

9、错误处理 如果离自己最近的then 没有错误处理(没有写错误函数) 会向下找,如果又错误处理函数则执行错误处理函数,然后根据第八条决定走下一个then的成功或失败,没有返回值就相当于返回undefined

10、每次执行完promise.then方法后返回的都是一个“新的promise" (promisey一旦成功或者失败就不能修改状态)

11、值穿透

let p = new Promise((resolve,reject)=>{
    resolve(1)
})

p.then().then().then(data=>{
    console.log(data)
})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Promise是JavaScript中处理异步操作的一种方式,它可以让我们更方便地处理异步任务的结果。下面是Promise基本使用方法: 1. 创建Promise对象: 使用Promise构造函数来创建一个Promise对象,构造函数接受一个函数作为参数,这个函数被称为执行器函数。执行器函数有两个参数,分别是resolve和reject,它们是两个函数类型的参数,用于处理Promise的状态。 2. 执行异步操作: 在执行器函数中,我们可以执行异步操作,比如发送网络请求、读取文件等。当异步操作完成时,我们可以调用resolve函数将Promise的状态设置为成功,并传递异步操作的结果;或者调用reject函数将Promise的状态设置为失败,并传递一个错误对象。 3. 处理Promise的状态: 可以使用Promise的then方法来处理Promise的状态。then方法接受两个参数,分别是成功回调函数和失败回调函数。当Promise的状态变为成功时,会调用成功回调函数并传递异步操作的结果;当Promise的状态变为失败时,会调用失败回调函数并传递错误对象。 4. 链式调用: Promise对象的then方法返回一个新的Promise对象,因此可以通过链式调用then方法来处理多个异步操作。在链式调用中,每个then方法都可以返回一个新的Promise对象,从而实现对多个异步操作的串行或并行处理。 5. 错误处理: 可以使用Promise的catch方法来处理Promise链中的错误。catch方法接受一个失败回调函数,用于处理Promise链中的任何一个Promise对象的状态变为失败时的情况。 下面是一个使用Promise的示例代码: ```javascript function fetchData() { return new Promise((resolve, reject) => { // 执行异步操作 setTimeout(() => { const data = 'Hello, Promise!'; // 异步操作成功,将Promise状态设置为成功,并传递结果 resolve(data); // 异步操作失败,将Promise状态设置为失败,并传递错误对象 // reject(new Error('Something went wrong')); }, 2000); }); } fetchData() .then((result) => { console.log(result); // 输出:Hello, Promise! }) .catch((error) => { console.error(error); // 输出:Error: Something went wrong }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值