手把手教你入门vue+springboot开发(十八)--Promise静态方法


前言

上一篇我们介绍了async/await和Promise的基本用法,理解了Promise的异步编程原理,但是Promise也提供了很多静态方法,在实际应用中往往会使用这些静态方法,这些静态方法比它的正常用法理解起来可能更困难一些,属于更深一层的东西,所以本篇我们就重点研究一下Promise的静态方法,供大家参考。


一、Promise.resolve

上一篇研究async/await时就用到Promise.resolve,当时主要为了更好的理解async/await的异步编程所以没有详细研究Promise.resolve,这里我们就结合上篇的例子来好好理解一下。
UserManage.vue中查询用户信息的函数:

const userList = async () => {
   
   
    let result = await userListService();

    console.log(result);
    //渲染视图
    users.value = result.data;
}

它实际上就是下面这一段Promise代码,这里使用了Promise.resolve

const userList = () => {
   
   
  return Promise.resolve(userListService()).then(result => {
   
   
    console.log(result);
    //渲染视图
    users.value = result.data;
  }).catch(error => {
   
   
    console.log(error);
  });
}

如果按照Promise的基本用法来理解,应该是这样:当我们调用resolve方法时,Promise的状态就会变成fulfilled,此时会调用then方法的onFulfilled回调函数,那应该直接就执行then里面的代码。但实际上是先执行userListService方法,获取到数据后才执行then里面的代码,为什么呢?
我们先来看看Promise.resolve的用法,根据所带参数类型它有四种用法:
1、参数为空时返回一个新的状态为fulfilled的Promise
2、参数为非then方法时返回一个新的状态为fulfilled的Promise
3、参数为then方法时返回一个新的Promise,而它的状态由自身的then()方法控制
then方法格式如下:

then(resolve, reject) {
   
   
    resolve("thenable");
  }

4、参数为Promise时直接返回这个Promise
也就是说不管参数是什么类型都是返回一个Promise实例,那它后面的then方法就是它返回的Promise实例的then方法,then方法的onFulfilled回调函数就由这个返回的Promise实例控制。

//获取用户详细信息
export const userListService = ()=>{
   
   
    return request.get('/user')
}

再来看看userListService方法,它实际上是调用了request.get(‘/user’) 方法,具体来说,request.get是 Axios 提供的一个方法,用于发送 GET 请求。Axios 的所有请求方法(如 get, post, put, delete 等)都会返回一个 Promise,这里又隐藏了一个Promise。那这个就属于第四种用法,Promise.resolve直接返回userListService,就相当于下面这段代码。

userListService().then(result => {
   
   
    console.log(result);
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值